在阿里云 ECS 上“自定义安装操作系统镜像”通常有两种理解场景:
- 从零开始构建一个自定义系统镜像(Custom Image):你希望基于某个基础镜像或裸金属服务器,通过 SSH/控制台登录,手动配置软件、环境后,保存为新的镜像供后续实例复用。
- 使用自定义镜像启动新 ECS 实例:你已经有了自定义镜像,想用它来创建新的云服务器。
下面我将重点介绍 如何从零构建并保存自定义系统镜像,这是最核心的“自定义安装”流程。
✅ 一、前提条件
- 拥有阿里云账号,并开通 ECS 服务。
- 已有一台正在运行的 ECS 实例(作为模板机),或准备一台新的 ECS 实例用于定制。
- 确保该实例未挂载重要数据盘(因为制作镜像时会停止实例)。
- 建议使用 Linux 系统(如 CentOS、Ubuntu、Alibaba Cloud Linux)进行示例操作。
✅ 二、步骤详解:构建自定义系统镜像
步骤 1:启动一台基准 ECS 实例
选择你需要的操作系统基础镜像(如 Alibaba Cloud Linux 3、Ubuntu 22.04 等),启动一台临时 ECS 实例。
💡 建议:不要使用生产环境中的实例,避免影响业务。
步骤 2:登录实例并定制系统
通过 SSH 或 VNC 控制台登录实例,执行以下操作:
(1)更新系统
sudo yum update -y # CentOS/Alibaba Cloud Linux
# 或
sudo apt update && sudo apt upgrade -y # Ubuntu
(2)安装所需软件包
例如:
sudo yum install -y nginx docker git python3-pip
# 或
sudo apt install -y nginx docker.io git python3-pip
(3)配置环境变量、用户权限、防火墙规则等
# 添加新用户
sudo useradd -m myuser
sudo passwd myuser
# 配置 sudo 权限
echo "myuser ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/myuser
# 开放端口(以 firewalld 为例)
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --reload
(4)清理冗余信息(推荐)
为避免镜像中包含敏感信息或临时文件,建议清理:
# 清除日志
sudo journalctl --vacuum-time=1s
sudo rm -rf /var/log/*.gz
# 清除 SSH host keys(下次启动会重新生成)
sudo rm -f /etc/ssh/ssh_host_*
# 清除 cloud-init 生成的唯一 ID(防止克隆冲突)
sudo rm -f /etc/machine-id
sudo truncate -s 0 /etc/machine-id
sudo systemd-sysusers
(5)卸载不必要的工具(可选)
如果某些调试工具不需要,可卸载以减少镜像体积。
步骤 3:停止实例
在阿里云控制台或命令行中停止该 ECS 实例:
# 通过控制台:ECS → 实例 → 更多 → 停机
# 或通过 CLI:
aliyun ecs StopInstance --InstanceId i-xxx
⚠️ 注意:制作镜像前必须处于“已停止”状态。
步骤 4:创建自定义镜像
方法一:通过阿里云控制台
- 进入 ECS 控制台
- 左侧导航栏选择 “镜像与共享” > “自定义镜像”
- 点击 “创建自定义镜像”
- 选择目标实例(即刚才定制的实例)
- 填写镜像名称、描述,勾选“不包含数据盘”(除非你需要保留数据盘内容)
- 点击 “确定”
方法二:通过阿里云 CLI
aliyun ecs CreateImage
--InstanceId i-xxxxxxxxxxxxx
--ImageName "MyCustomImage-v1"
--Description "Custom image with nginx, docker, and git"
--Force true
📌 创建过程可能需要几分钟到十几分钟,取决于磁盘大小和网络速度。
步骤 5:验证和使用自定义镜像
- 在“自定义镜像”列表中查看刚创建的镜像,确认状态为“可用”。
- 使用该镜像创建新的 ECS 实例:
- 创建实例时,在“镜像”选项中选择你的自定义镜像。
- 新实例将完全继承之前定制的系统环境。
✅ 三、高级技巧与建议
1. 使用脚本自动化定制过程
你可以编写一个 shell 脚本,在实例首次启动时自动执行定制任务,然后立即创建镜像,提高效率。
2. 排除敏感信息
确保镜像中不包含:
- 密码、SSH 私钥
- API Key、Access Token
- 个人身份信息
可在创建镜像前运行 grep 或 find 命令检查。
3. 多版本管理
为不同用途创建多个镜像(如 Web 服务器、数据库服务器、开发环境),便于快速部署。
4. 共享镜像(可选)
如果你需要在其他账号中使用该镜像,可通过“共享镜像”功能授权给其他阿里云账号。
✅ 四、常见问题解答
Q:能否直接从 ISO 文件安装操作系统?
A:阿里云不支持直接上传本地 ISO 文件创建镜像。但你可以通过以下方式间接实现:
- 使用官方提供的操作系统镜像作为基础;
- 在实例中手动安装所需软件,再制作为自定义镜像;
- 或使用 Packer + 阿里云插件自动化构建镜像(进阶方案)。
Q:自定义镜像是否包含数据盘内容?
A:默认情况下,自定义镜像只包含系统盘。如需包含数据盘,需在创建镜像时勾选“包含数据盘”,但需注意数据盘中的数据也会被固化到镜像中。
Q:如何恢复自定义镜像?
A:直接使用自定义镜像创建新的 ECS 实例即可,无需额外恢复操作。
✅ 总结
| 步骤 | 操作 |
|---|---|
| 1 | 启动基准 ECS 实例 |
| 2 | 登录并定制系统(装软件、配环境、清垃圾) |
| 3 | 停止实例 |
| 4 | 创建自定义镜像(控制台或 CLI) |
| 5 | 使用自定义镜像创建新实例 |
通过以上流程,你可以在阿里云 ECS 上灵活地构建和复用高度定制化的操作系统镜像,大幅提升部署效率和一致性。
如需进一步自动化,可结合 Packer、Ansible 或 阿里云 OpenAPI 实现 CI/CD 流水线中的镜像构建。
CLOUD技术笔记