最近更新时间:2026-10-08 10:01:32
本文介绍在金山云上制作自定义镜像的完整流程,包括准备工作、基于实例、基于快照以及使用 Packer 工具三种制作方式,帮助您快速复制系统环境。
实例需处于运行中或已关闭状态方可制作镜像。
每个地域默认支持 500 个自定义镜像,可在金山云控制台配额列表查看资源配额。若有调整需求,具体操作请参见创建配额调整申请。
极速可用镜像仅支持系统盘为 SSD3.0 云硬盘的实例,本地盘机型无法使用极速可用镜像创建实例。
自定义镜像默认仅在同地域可用,若需在其他地域使用,请先执行复制镜像操作。
在制作镜像前,请根据操作系统类型完成以下准备工作,以确保镜像制作成功且实例能够正常启动。
删除/屏蔽 /etc/fstab 中的用户自定义挂载信息,仅保留系统自带的挂载配置。
若保留自定义挂载项,基于该镜像创建的实例可能因无法挂载对应磁盘而启动失败。
开放DHCP协议端口:确保系统防火墙允许 UDP 67/68 端口的通信,以保证实例能够正常获取 IP 地址:
方案一(推荐)
netsh advfirewall firewall set portopening udp 67 enable
netsh advfirewall firewall set portopening udp 68 enable或者使用旧版命令:
netsh firewall set portopening udp 67 enable
netsh firewall set portopening udp 68 enable适用于已有运行中实例的场景。
登录云服务器KEC控制台,默认进入云服务器 > 实例页面。
在目标实例对应的操作列中,选择更多 > 云盘和镜像 > 制作镜像。
在制作镜像页面,配置各项参数,点击确定。
参数 | 是否必须 | 说明 |
|---|---|---|
镜像名称 | 是 | 当前镜像名称,用于区分和筛选,用户自定义即可。 |
镜像描述 | 是 | 针对当前镜像的描述性信息。支持2-256个字符,支持中文,字母,数字,以及-_符号。 |
镜像类型 | 是 | 支持选择普通镜像或极速可用镜像,主要区别在于存储位置不同:
|
添加数据盘 | 否 | 根据业务需要选择是否添加数据盘。 若实例使用本地硬盘,则在添加数据盘时,可勾选支持快速开盘。勾选后使用该镜像开盘效率将有效提升,但会对该磁盘进行一次全量备份,该磁盘关联的快照链容量将会增加。 |
系统自动跳转至自定义镜像页面,可查看当前镜像制作进度和状态。
仅系统盘快照支持制作镜像,如果已有系统盘的快照,可以直接通过快照来创建自定义镜像。
登录云服务器KEC控制台。
在左侧导航栏中,选择实例,进入实例列表页面。
在实例列表中,点击目标实例名称/ID,进入其详情页面。
在实例详情页面,选择快照页签,点击目标快照操作列更多>制作镜像。
在制作镜像页面,配置各项参数,点击确定。
参数 | 是否必须 | 说明 |
|---|---|---|
镜像名称 | 是 | 当前镜像名称,用于区分和筛选,用户自定义即可。 |
数据盘快照 | 否 | 根据业务形态自主选择是否勾选添加数据盘快照。 系统盘快照类型为极速可用快照时,数据盘快照类型仅支持选择极速可用快照,创建的自定义镜像类型为极速可用镜像;系统盘快照类型为普通快照时,数据盘快照类型仅支持选择普通快照,创建的自定义镜像类型为普通镜像。 |
在左侧导航栏,选择镜像>自定义镜像,可查看当前镜像制作进度和状态。
Packer 是一款轻量级的镜像定义工具,能够运行在 Windows、Linux 和 macOS 上。
克隆存储库到 $GOPATH/src/github.com/kingsoftcloud/packer-plugin-ksyun。
$ mkdir -p $GOPATH/src/github.com/kingsoftcloud
$ cd $GOPATH/src/github.com/kingsoftcloud
$ git clone git@github.com:kingsoftcloud/packer-plugin-ksyun.git构建并链接到 Packer。
$ cd $GOPATH/src/github.com/kingsoftcloud/packer-plugin-ksyun
$ make build
$ ln -s $GOPATH/bin/packer-plugin-ksyun ~/.packer.d/plugins/packer-plugin-ksyun使用 Packer 创建自定义镜像时,需要创建一个 JSON 格式的模板文件,指定生成器和配置器。
{
"variables": {
"access_key": "{{ env `KSYUN_ACCESS_KEY` }}",
"secret_key": "{{ env `KSYUN_SECRET_KEY` }}"
},
"builders": [{
"type":"ksyun-kec",
"access_key":"{{user `access_key`}}",
"secret_key":"{{user `secret_key`}}",
"region":"cn-shanghai-2",
"image_name":"packer_test",
"source_image_id":"IMG-dd1f8324-1f27-46e0-ad6b-b41d8c8ff025",
"instance_type":"N3.1B",
"ssh_username":"root",
"associate_public_ip_address": true
}],
"provisioners": [{
"type": "shell",
"inline": [
"sleep 30",
"yum install mysql -y"
]
}]
}模板参数说明:
参数 | 是否必须 | 说明 |
|---|---|---|
| 是 | 您的 AccessKey ID。 |
| 是 | 您的 AccessKey Secret。 |
| 是 | 创建自定义镜像时使用临时资源的地域。 |
| 是 | 自定义镜像的名称。 |
| 是 | 基础镜像的 ID。 |
| 是 | 创建自定义镜像时生成的临时实例的类型。 |
| 是 | 创建自定义镜像时使用的 Packer 配置器类型。 |
导入您的 AccessKey ID。
export KSYUN_ACCESS_KEY=***导入您的 AccessKey Secret。
export KSYUN_SECRET_KEY=<您的Acc…ret>创建自定义镜像。
packer build example/ksyun.json镜像制作失败的可能原因包括:实例处于异常状态(如已关机、重启中、系统损坏);Linux 实例 /etc/fstab 中存在错误的自定义挂载项;Windows 实例防火墙未开放 DHCP 端口导致无法获取 IP;数据盘快照类型与系统盘快照类型不一致;超出地域镜像配额上限。
极速可用镜像本身存储于 EBS 集群,不占用 KS3 存储空间,但会产生相应的 EBS 快照费用。
自定义镜像的存储费用取决于实际占用空间。普通镜像存储于 KS3,按 KS3 标准存储计费;极速可用镜像按 EBS 快照计费规则收费。
建议定期删除不再使用的镜像及关联快照,避免产生不必要的费用。
纯净模式
