当前位置:首页 > Ubuntu > 正文

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

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

什么是 Ubuntu Cloud Image?

Ubuntu 官方为云平台(如 AWS、OpenStack、KVM、VMware 等)提供了轻量级的 QCOW2 或 RAW 格式的系统镜像,称为 Cloud Image。这些镜像默认不包含图形界面,体积小、启动快,并支持通过 cloud-init 工具在首次启动时自动完成初始化配置。

Ubuntu云镜像制作指南(手把手教你从零构建自定义Ubuntu Cloud Image) Ubuntu云镜像制作 自定义Ubuntu镜像 Ubuntu cloud image 创建Ubuntu虚拟机镜像 第1张

准备工作

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

  • 一台运行 Ubuntu 20.04/22.04 的主机(物理机或虚拟机均可)
  • 安装必要的工具:qemu-utilslibguestfs-toolscloud-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-datameta-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虚拟机镜像 的任务!如有疑问,欢迎在评论区交流。