在阿里云上使用自定义镜像,核心逻辑其实就两步:把镜像上传到对象存储(OSS)作为中转站,然后通过控制台或 API 将该 OSS 中的镜像注册为 ECS 可用的自定义镜像。
这里有一个常见的误区需要澄清:你通常不能直接把本地做好的 .iso 或者虚拟机的磁盘文件“扔”进阿里云。阿里云的自定义镜像格式有特定要求(通常是 RAW、QCOW2、VHD、VMDK 等),且必须经过“导入”或“复制”流程才能被 ECS 识别。
以下是目前最稳定、最常用的两种操作路径,按推荐程度排序:
方法一:通过 OSS 导入镜像(官方推荐,最稳妥)
这是阿里云官方文档主推的方式,适用于将本地制作好的系统盘镜像文件上传并转换为阿里云自定义镜像。
1. 准备工作
- 镜像文件格式:确保你的镜像是支持的格式(如
qcow2,raw,vhd,vhdx,vmdk)。如果是 Windows 镜像,建议提前安装好 Aliyun Guest Agent(虽然新版阿里云镜像通常会自动处理,但手动准备更保险)。 - 压缩镜像:为了加快上传速度,强烈建议先将镜像文件压缩成
.gz或.zip格式。例如,一个 10GB 的 raw 镜像,压缩后可能只有 3-4GB,能节省大量传输时间和流量成本。 - 创建 OSS Bucket:登录阿里云 OSS 控制台,创建一个 Bucket(建议选与你要创建 ECS 的地域相同,比如都在“华东1杭州”,这样内网传输速度快且免费)。
2. 上传镜像到 OSS
使用 OSS Browser 工具、ossutil 命令行工具,或者直接在网页端上传你的压缩镜像文件到刚才创建的 Bucket 中。记下文件的完整路径,例如:oss://my-bucket/images/my-centos7.qcow2.gz。
3. 导入自定义镜像
- 登录 ECS 控制台。
- 左侧导航栏选择 “镜像与组件” > “自定义镜像”。
- 点击 “导入自定义镜像”。
- 填写信息:
- 镜像名称:起个名字,如
My-Custom-CentOS7-v1。 - 平台:Linux 或 Windows(根据你的镜像类型选)。
- 操作系统:选择对应的发行版(如 CentOS 7.9, Ubuntu 20.04 等)。
- 架构:x86_64 或 arm64。
- 描述:可选。
- 来源:选择 “OSS 导入”。
- Bucket 所在地域:选择你存放镜像的那个 OSS Bucket 所在的地域。
- Bucket 名称:填入你的 Bucket 名。
- Object Key:填入你在 OSS 中上传的文件完整路径(即
images/my-centos7.qcow2.gz这种相对路径,不要带 oss://前缀,具体看控制台提示)。
- 镜像名称:起个名字,如
- 勾选同意协议,点击确定。
此时系统会开始异步导入。你可以在列表中看到状态从“导入中”变为“可用”。这个过程取决于镜像大小和网络状况,可能需要几分钟到几十分钟不等。
4. 使用镜像创建 ECS
当镜像状态变为 “可用” 后:
- 去 “实例” > “创建实例”。
- 在 “镜像” 步骤,选择 “自定义镜像”。
- 找到你刚导入的那个镜像,选中它。
- 后续配置网络、安全组等正常设置即可。
方法二:利用现有 ECS 制作镜像(适合迭代更新)
如果你已经有一台运行正常的 ECS 实例,只是想在上面做个修改(比如装个软件、改个配置),然后保存为新镜像,这个方法最快。
- 停止实例:为了数据一致性,务必先停止 ECS 实例(注意:包年包月实例可以停,按量付费实例停了就不计费了,但 IP 可能会变,除非绑定了弹性公网 IP EIP)。
- 制作镜像:
- 在 ECS 实例详情页,找到 “更多” > “云盘和镜像” > “制作自定义镜像”。
- 给镜像命名,等待制作完成。
- 启动实例:镜像制作完成后,重新启动原 ECS 实例。
- 使用新镜像:现在你可以用这个新制作的自定义镜像去创建新的 ECS 实例了。
优点:无需上传下载大文件,全程在内网完成,速度极快。
缺点:只能基于已有的 ECS 实例制作,无法从零开始在本地虚拟机制作后上传。
关键注意事项(避坑指南)
-
地域一致性:
- 自定义镜像是地域级资源。你在“华东1杭州”制作的镜像,只能在杭州地域的 ECS 中使用。如果你想在全国其他地方用,需要在自定义镜像页面选择 “跨地域复制”,复制到目标地域。
-
驱动兼容性:
- 如果你是从其他云平台(如 AWS、VMware、Hyper-V)迁移过来的镜像,务必检查是否安装了阿里云的 virtio 驱动。如果没有,开机后可能会黑屏或卡在启动界面。阿里云提供了专门的驱动包,建议在制作镜像前集成进去。
-
Windows 镜像的特殊性:
- Windows 镜像对激活状态敏感。建议使用微软官方未激活的 ISO 安装基础系统,然后安装阿里云插件(AliyunGuestAgent),最后再制作镜像。不要直接使用已经激活过的企业版镜像,否则在新机器上可能因硬件变更导致激活失败。
-
性能优化:
- 对于 Linux 系统,建议在镜像中预装
cloud-init,并确保/etc/fstab中没有硬编码的设备名(如/dev/vda1),因为阿里云的云盘设备名可能是动态分配的。使用 UUID 或 LABEL 来挂载磁盘更安全。
- 对于 Linux 系统,建议在镜像中预装
-
合规性:
- 确保你的镜像不包含任何XX软件、恶意代码或违反中国法律法规的内容。阿里云会对上传的镜像进行扫描,违规镜像会被删除甚至封禁账号。
总结
- 从零开始做镜像:本地打包 -> 压缩 -> 传 OSS -> 控制台导入 -> 创建 ECS。
- 基于现有服务器改镜像:停 ECS -> 制作镜像 -> 启 ECS -> 用新镜像创建新 ECS。
这两种方式覆盖了 99% 的使用场景。遇到具体问题,优先查看 ECS 控制台的“帮助”文档,里面有详细的截图指引。
云技术博客