首页 > 代码库 > Managing Images on smartos
Managing Images on smartos
SmartOS依赖images。images是包含在创建新zone或虚拟机时使用的磁盘或文件系统映像和元数据的模板。
images使用imgadm工具进行管理。 使用此工具,您可以:
查看和下载在公共映像服务器上可用的映像
安装本地images或者import远程images
列出,显示或打印有关images的详细信息
销毁images
这里我们将讨论如何查找可用的images并开始使用它们。 然后我们将看看images是什么,以及如何创建自己的images。 最后,我们来看一下如何创建自己的私有image server。
Basics
Viewing & Downloading Public Images(查看和下载公开的images)
**注意,这些信息最近已经改变了,为了清楚和正确,这一段可能被编辑**
默认images服务器是https://images.joyent.com。 您可以使用imgadm sources -a <URL>命令来编辑源列表,如imgadm(1m)中所述。 使用命令imgadm更新,将导致本地缓存(/var/db/imgadm/imgcache.json)使用sources.list中找到的服务器上的可用映像进行更新。 一旦您的本地缓存更新,您可以列出所有可用的images使用imgadm avail:
# imgadm sources https://images.joyent.com # imgadm avail | head -n 1 ; imgadm avail | tail UUID NAME VERSION OS PUBLISHED 380539c4-3198-11e5-82c8-bf9eeee6a395 debian-7 20150724 linux 2015-07-24T00:09:14Z ab3db4c0-31ac-11e5-8856-43e56a8e4285 centos-6 20150724 linux 2015-07-24T02:35:38Z 7459f182-31af-11e5-b23a-eb0fd8799c77 freebsd-10 20150724 bsd 2015-07-24T02:55:34Z ead4ff68-320a-11e5-bd54-3749d04712df ubuntu-14.04 20150724 linux 2015-07-24T13:50:17Z 0764d78e-3472-11e5-8949-4f31abea4e05 minimal-32 15.2.0 smartos 2015-07-27T15:13:25Z 8ec06130-3472-11e5-bf91-ebc747dbae7e minimal-64 15.2.0 smartos 2015-07-27T15:17:13Z 1e5d6e28-3473-11e5-9e94-1fd77993b49f minimal-multiarch 15.2.0 smartos 2015-07-27T15:21:14Z 2bd52afe-3474-11e5-b07d-c7fb14b2c9e8 base-32 15.2.0 smartos 2015-07-27T15:28:46Z 5c7d0d24-3475-11e5-8e67-27953a8b237e base-64 15.2.0 smartos 2015-07-27T15:37:17Z 9caff6c6-3476-11e5-9951-bf98c6cb8636 base-multiarch 15.2.0 smartos 2015-07-27T15:46:14Z # imgadm avail | grep base-64 | tail c02a2044-c1bd-11e4-bd8c-dfc1db8b0182 base-64-lts 14.4.0 smartos 2015-03-03T15:55:44Z 24648664-e50c-11e4-be23-0349d0a5f3cf base-64-lts 14.4.1 smartos 2015-04-17T14:15:04Z 4166f6d6-ea5f-11e4-addd-8351b159d9b6 base-64 15.1.0 smartos 2015-04-24T08:52:36Z b67492c2-055c-11e5-85d8-8b039ac981ec base-64-lts 14.4.2 smartos 2015-05-28T17:12:26Z 0edf00aa-0562-11e5-b92f-879647d45790 base-64 15.1.1 smartos 2015-05-28T17:50:41Z 5c7d0d24-3475-11e5-8e67-27953a8b237e base-64 15.2.0 smartos 2015-07-27T15:37:17Z
要下载这些images之一,如“base-64”,我们将使用图像UUID导入它:
# imgadm import 5c7d0d24-3475-11e5-8e67-27953a8b237e Importing 5c7d0d24-3475-11e5-8e67-27953a8b237e (base-64@15.2.0) from "https://images.joyent.com" Gather image 5c7d0d24-3475-11e5-8e67-27953a8b237e ancestry Must download and install 1 image (127.2 MiB) Imported image 5c7d0d24-3475-11e5-8e67-27953a8b237e (base-64@15.2.0) # imgadm list UUID NAME VERSION OS PUBLISHED 5c7d0d24-3475-11e5-8e67-27953a8b237e base-64 15.2.0 smartos 2015-07-27T15:37:17Z
Advanced Topics
What exactly is an Image?
图像是创建新VM所需的数据和元数据。 “数据”是一个或多个压缩的ZFS数据集,将被克隆以创建新的VM。 “元数据”以JSON的形式描述了数据,并概述了使用它的机器的规范。
以下是两个文件的示例:
benr@magnolia:~/datasets$ ls -lh total 41M -rw-rw-r-- 1 benr benr 996 Sep 10 14:54 smartos-1.3.12.dsmanifest -rw-rw-r-- 1 benr benr 41M Jun 10 2011 smartos-1.3.12.zfs.bz2
Image Manifests(image 清晰度)
以下是从公共存储库https://datasets.joyent.com/datasets/(为了清楚起见而添加重新排列和换行符)的示例清单。
您会注意到,当创建/更新/发布图像时,我们有属性可以识别图像(UUID,名称,版本,描述等),作者(creator_name,creator_uuid等),然后是一个标识ZFS的数组 数据集文件或文件,最后列出一些要求的数组。
{ "uuid": "febaa412-6417-11e0-bc56-535d219f2590", "name": "smartos", "version": "1.3.12", "description": "Base template to build other templates on", "os": "smartos", "type": "zone-dataset", "platform_type": "smartos", "cloud_name": "sdc", "urn": "sdc:sdc:smartos:1.3.12", "creator_name": "sdc", "creator_uuid": "352971aa-31ba-496c-9ade-a379feaecd52", "vendor_uuid": "352971aa-31ba-496c-9ade-a379feaecd52", "created_at": "2011-04-11T08:45Z", "updated_at": "2011-04-11T08:45Z", "published_at": "2011-04-11T08:45Z", "files": [ { "path": "smartos-1.3.12.zfs.bz2", "sha1": "246c9ae158dc8f204643afdd6bd4d3c4aa35e733", "size": 42016482, "url": "https://datasets.joyent.com/datasets/febaa412-6417-11e0-bc56-535d219f2590/smartos-1.3.12.zfs.bz2" } ], "requirements": { "networks": [ { "name": "net0", "description": "public" } ] } }
创建自己的清单时,需要以下属性:
uuid:image的UUID(使用在线UUID生成器)
名称:image的名称(例如:“centos-6”)
版本:image的版本(例如:“1.0.0”)
描述:image的简短描述
published_at:在映像服务器上发布日期的时间戳(不需要准确);以正确格式输出当前时间,使用命令:date +“%Y-%m-%dT%T.000Z”
creator_uuid:image作者的UUID(如果您没有使用在线UUID生成器)
creator_name:image作者的名称
urn:用于以“cloud_name:creator_name:name:version”的形式描述image的特殊字符串;对于“cloud_name”,如果您不确定,我建议“smartos”,创建者的名字通常是您的组织。字符串不应包含空格。 (例如:“smartos:cuddletech:plan9:1.0.0”)
类型:image的类型,KVM的“zvol”或zone的“zone-dataset”
os:这个image的操作系统,需要。在撰写本文时,必须是smartos,linux,windows,bsd,illumos等。
文件:一个或多个文件对象的数组,每个文件对象包含以下属性:
路径:image数据文件的本地文件路径(压缩zfs转储)
sha1:image数据文件的SHA1;获取SHA1哈希使用:digest -a sha1 <file>
size:image数据文件的文件大小;获取使用:ls -l <??file>
要求部分是推荐但不是当前需要,也不是强制执行。
Creating a Custom Zone Image
创建zone image的过程如下所示:
根据需要创建和自定义zone
清除日志等,并运行sm准备image以使机器image-ready(请记住阅读警告消息!)。
暂停zone:vmadm stop <UUID>
快照zone数据集:zfs快照区域/ <UUID> @image
转储和压缩数据集:zfs send zones / <UUID> @image | gzip> image_name.zfs.gz
创建如上所述的清单
您现在可以通过imgadm在本地导入映像或将其传输到映像服务器。
Managing Images on smartos