Ubuntu云镜像制作指南(手把手教你从零构建自定义Ubuntu Cloud Image)

来源:这里教程网 时间:2026-03-28 13:08:50 作者:

在云计算和虚拟化环境中,使用官方提供的 Ubuntu云镜像(Ubuntu Cloud Image) 是部署虚拟机的高效方式。但很多时候我们需要预装软件、配置网络或设置用户账户,这就需要我们基于官方镜像进行定制。本文将详细介绍如何从零开始制作一个自定义的 Ubuntu云镜像,即使你是 Linux 新手也能轻松上手。

什么是 Ubuntu Cloud Image?

Ubuntu 官方为云平台(如 AWS、OpenStack、KVM、VMware 等)提供了轻量级的 QCOW2 或 RAW 格式的系统镜像,称为 Cloud Image。这些镜像默认不包含图形界面,体积小、启动快,并支持通过

cloud-init
工具在首次启动时自动完成初始化配置。

准备工作

在开始之前,请确保你的系统满足以下条件:

一台运行 Ubuntu 20.04/22.04 的主机(物理机或虚拟机均可) 安装必要的工具:
qemu-utils
libguestfs-tools
cloud-image-utils
至少 5GB 的可用磁盘空间

首先,更新系统并安装所需工具:

sudo apt updatesudo apt install -y qemu-utils libguestfs-tools cloud-image-utils

步骤一:下载官方 Ubuntu Cloud Image

访问 Ubuntu Cloud Images 官网,选择你需要的版本(例如 22.04 LTS)。我们以

jammy
(22.04)为例:

wget https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img

步骤二:扩展镜像大小(可选但推荐)

默认镜像通常只有 2~3GB,可能不够用。我们可以将其扩展到 10GB:

# 创建副本,避免修改原始文件cp jammy-server-cloudimg-amd64.img ubuntu-custom.img# 扩展到 10GBqemu-img resize ubuntu-custom.img 10G

步骤三:挂载镜像并进入 chroot 环境

使用

virt-customize
(来自 libguestfs-tools)可以直接修改镜像,无需手动挂载。例如,安装软件包、添加用户等:

# 安装 nginx 并设置 root 密码(仅用于测试,生产环境建议禁用 root)sudo virt-customize -a ubuntu-custom.img \ --install nginx \ --root-password password:MySecurePass123 \ --run-command 'systemctl enable nginx'

如果你希望更精细地控制,也可以使用

guestfish
手动挂载并 chroot:

# 启动 guestfishguestfish -a ubuntu-custom.img -i# 在 guestfish shell 中执行(注意:这是交互式命令)> sh "apt update && apt install -y vim git"> exit

步骤四:配置 cloud-init(关键!)

为了让虚拟机首次启动时能自动配置 SSH 密钥、用户、网络等,我们需要准备一个

user-data
meta-data
文件,并生成 ISO 镜像作为配置盘。

创建

meta-data
(可为空):

echo "instance-id: ubuntu-custom-vm" > meta-data

创建

user-data
(注意第一行必须是
#cloud-config
):

cat > user-data <#cloud-configusers: - name: ubuntu ssh-authorized-keys: - ssh-rsa AAAAB3NzaC1yc2E... your_public_key_here sudo: ['ALL=(ALL) NOPASSWD:ALL'] groups: sudochpasswd: expire: Falsessh_pwauth: TrueEOF

生成配置 ISO:

cloud-localds seed.iso user-data meta-data

步骤五:测试自定义镜像

使用 QEMU 启动虚拟机进行测试:

qemu-system-x86_64 \ -drive file=ubuntu-custom.img,format=qcow2 \ -cdrom seed.iso \ -m 2048 \ -net nic -net user,hostfwd=tcp::2222-:22 \ -nographic

现在你可以通过

ssh -p 2222 ubuntu@localhost
登录虚拟机,验证配置是否生效。

总结

通过以上步骤,你已经成功制作了一个包含自定义软件和用户配置的 Ubuntu云镜像。这种方法适用于 OpenStack、Proxmox、KVM 等多种虚拟化平台。记住,核心在于利用

cloud-init
实现自动化初始化,而镜像本身只需包含基础系统和必要软件。

掌握 自定义Ubuntu镜像 的制作方法,不仅能提升部署效率,还能确保环境一致性。无论是开发测试还是生产上线,这都是一项非常实用的技能。

希望这篇教程能帮助你顺利完成 创建Ubuntu虚拟机镜像 的任务!如有疑问,欢迎在评论区交流。

相关推荐

热文推荐