十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

如何使用 Virt-builder 构建虚拟机映像

如何使用 Virt-builder 构建虚拟机映像 本指南介绍了什么是 Virt-builder、如何在 Linux 中安装 Virt-builder 以及如何在 Linux 中使用 Virt-builder 构建虚拟机映像。什么是Virt-builderVirt-builder是一个命令行工具用于轻松快速地构建各种虚拟机映像以供本地或云使用。它还具有许多自定义图像的选项。您可以在 VM 映像上安装新应用程序、设置主机名、设置 root 密码、在来宾 VM 首次启动时运行命令或脚本、在磁盘映像中添加或编辑文件等。所有这些任务都可以从命令行完成不需要 root 权限。Virt-builder 下载干净准备好的、经过数字签名的 操作系统模板因此您无需手动安装操作系统。您所要做的只是使用Virt-managerGUI 或Virt-install命令行工具立即启动具有预定义模板的虚拟机。 Virt-builder 为流行的 Linux 和 Unix 变体提供了最小的操作系统模板。您当然也可以创建自己的模板。在 Linux 上安装 Virt-builderVirt-builder 是 Libguestfs 库的一部分因此请确保您已按照以下指南中的说明安装它。使用 Libguestfs 访问和修改虚拟机磁盘映像使用 Virt-builder 构建虚拟机映像使用 Virt-builder 构建虚拟机映像非常简单且直接。列出可用的虚拟机模板首先列出可用的操作系统模板。为此请运行升级操作系统virt-builder --list在撰写本指南时可以使用以下模板centos-6 x86_64 CentOS 6.6 centos-7.0 x86_64 CentOS 7.0 centos-7.1 x86_64 CentOS 7.1 centos-7.2 aarch64 CentOS 7.2 (aarch64) centos-7.2 x86_64 CentOS 7.2 centos-7.3 x86_64 CentOS 7.3 centos-7.4 x86_64 CentOS 7.4 centos-7.5 x86_64 CentOS 7.5 centos-7.6 x86_64 CentOS 7.6 centos-7.7 x86_64 CentOS 7.7 centos-7.8 x86_64 CentOS 7.8 centos-8.0 x86_64 CentOS 8.0 centos-8.2 x86_64 CentOS 8.2 cirros-0.3.1 x86_64 CirrOS 0.3.1 cirros-0.3.5 x86_64 CirrOS 0.3.5 debian-10 x86_64 Debian 10 (buster) debian-6 x86_64 Debian 6 (Squeeze) debian-7 sparc64 Debian 7 (Wheezy) (sparc64) debian-7 x86_64 Debian 7 (wheezy) debian-8 x86_64 Debian 8 (jessie) debian-9 x86_64 Debian 9 (stretch) fedora-26 aarch64 Fedora® 26 Server (aarch64) fedora-26 armv7l Fedora® 26 Server (armv7l) fedora-26 i686 Fedora® 26 Server (i686) fedora-26 ppc64 Fedora® 26 Server (ppc64) fedora-26 ppc64le Fedora® 26 Server (ppc64le) fedora-26 x86_64 Fedora® 26 Server fedora-27 aarch64 Fedora® 27 Server (aarch64) fedora-27 armv7l Fedora® 27 Server (armv7l) fedora-27 i686 Fedora® 27 Server (i686) fedora-27 ppc64 Fedora® 27 Server (ppc64) fedora-27 ppc64le Fedora® 27 Server (ppc64le) fedora-27 x86_64 Fedora® 27 Server fedora-28 i686 Fedora® 28 Server (i686) fedora-28 x86_64 Fedora® 28 Server fedora-29 aarch64 Fedora® 29 Server (aarch64) fedora-29 i686 Fedora® 29 Server (i686) fedora-29 ppc64le Fedora® 29 Server (ppc64le) fedora-29 x86_64 Fedora® 29 Server fedora-30 aarch64 Fedora® 30 Server (aarch64) fedora-30 i686 Fedora® 30 Server (i686) fedora-30 x86_64 Fedora® 30 Server fedora-31 x86_64 Fedora® 31 Server fedora-32 x86_64 Fedora® 32 Server freebsd-11.1 x86_64 FreeBSD 11.1 scientificlinux-6 x86_64 Scientific Linux 6.5 ubuntu-10.04 x86_64 Ubuntu 10.04 (Lucid) ubuntu-12.04 x86_64 Ubuntu 12.04 (Precise) ubuntu-14.04 x86_64 Ubuntu 14.04 (Trusty) ubuntu-16.04 x86_64 Ubuntu 16.04 (Xenial) ubuntu-18.04 x86_64 Ubuntu 18.04 (bionic) fedora-18 x86_64 Fedora® 18 fedora-19 x86_64 Fedora® 19 fedora-20 x86_64 Fedora® 20 fedora-21 aarch64 Fedora® 21 Server (aarch64) fedora-21 armv7l Fedora® 21 Server (armv7l) fedora-21 ppc64 Fedora® 21 Server (ppc64) fedora-21 ppc64le Fedora® 21 Server (ppc64le) fedora-21 x86_64 Fedora® 21 Server fedora-22 aarch64 Fedora® 22 Server (aarch64) fedora-22 armv7l Fedora® 22 Server (armv7l) fedora-22 i686 Fedora® 22 Server (i686) fedora-22 x86_64 Fedora® 22 Server fedora-23 aarch64 Fedora® 23 Server (aarch64) fedora-23 armv7l Fedora® 23 Server (armv7l) fedora-23 i686 Fedora® 23 Server (i686) fedora-23 ppc64 Fedora® 23 Server (ppc64) fedora-23 ppc64le Fedora® 23 Server (ppc64le) fedora-23 x86_64 Fedora® 23 Server fedora-24 aarch64 Fedora® 24 Server (aarch64) fedora-24 armv7l Fedora® 24 Server (armv7l) fedora-24 i686 Fedora® 24 Server (i686) fedora-24 x86_64 Fedora® 24 Server fedora-25 aarch64 Fedora® 25 Server (aarch64) fedora-25 armv7l Fedora® 25 Server (armv7l) fedora-25 i686 Fedora® 25 Server (i686) fedora-25 ppc64 Fedora® 25 Server (ppc64) fedora-25 ppc64le Fedora® 25 Server (ppc64le) fedora-25 x86_64 Fedora® 25 Server opensuse-13.1 x86_64 openSUSE 13.1 opensuse-13.2 x86_64 openSUSE 13.2 opensuse-42.1 x86_64 openSUSE Leap 42.1 opensuse-tumbleweed x86_64 openSUSE Tumbleweed使用 Virt-builder 列出可用的虚拟机如您所见有多个可用的 操作系统模板。升级操作系统在构建虚拟机映像之前您可能需要查看来宾操作系统的安装说明以了解其中的内容。例如要查看 Debian 10 的安装说明请运行virt-builder --notes debian-10示例输出Debian 10 (buster) This is a minimal Debian install. This image is so very minimal that it only includes an ssh server This image does not contain SSH host keys. To regenerate them use: --firstboot-command dpkg-reconfigure openssh-server This template was generated by a script in the libguestfs source tree: builder/templates/make-template.ml Associated files used to prepare this template can be found in the same directory.构建虚拟机镜像我想将操作系统模板下载到特定目录中因此我创建了这个目录升级操作系统mkdir virtbuilder cd virtbuilder/让我们使用命令构建 Debian 10 虚拟机virt-builder debian-10示例输出[ 4.8] Downloading: http://builder.libguestfs.org/debian-10.xz ##################################################################################### 100.0% [ 83.2] Planning how to build this image [ 83.2] Uncompressing [ 101.2] Opening the new disk [ 119.8] Setting a random seed virt-builder: warning: random seed could not be set for this type of guest [ 119.9] Setting passwords virt-builder: Setting random password of root to 66xW1CaIqfM8km2v [ 121.5] Finishing off Output file: debian-10.img Output size: 6.0G Output format: raw Total usable space: 5.8G Free space: 4.9G (84%)在 Linux 中使用 virt-builder 构建虚拟机映像如您所见此命令构建了最小的 Debian 10 映像。它不会有任何用户帐户。它只有随机根密码和最低限度安装的 软件。图像的输出名称应与模板名称相同。您可以使用-o选项根据您的喜好更改它virt-builder debian-10 -o ostechnix.img默认情况下生成的图像格式为.img。您可以将其转换为不同的格式例如 Qcow2如下所示virt-builder debian-10 --format qcow2默认情况下Virt-builder 将构建与主机操作系统架构相同的映像。例如如果您的主机操作系统是 64 位它将构建 64 位 VM。您可以使用--arch选项将其更改为 32 位如果可用。virt-builder debian-10 --arch i686想要构建自定义尺寸的图像这也是可能的。以下命令将构建大小为 50 GB 的 VMvirt-builder debian-10 --size 50G当复制到输出时使用virt-resize命令自动调整来宾操作系统的大小。设置root密码正如我已经提到的在构建映像时将向 root 用户帐户分配一个随机密码。如果您想为 root 用户设置特定密码请使用--root-password选项如下所示virt-builder centos-8.2 --format qcow2 --root-password password:centos示例输出[ 5.1] Downloading: http://builder.libguestfs.org/centos-8.2.xz ##################################################################################### 100.0% [ 249.2] Planning how to build this image [ 249.2] Uncompressing [ 271.3] Converting raw to qcow2 [ 281.1] Opening the new disk [ 319.9] Setting a random seed [ 320.4] Setting passwords [ 323.0] Finishing off Output file: centos-8.2.qcow2 Output size: 6.0G Output format: qcow2 Total usable space: 5.3G Free space: 4.0G (74%)上面的命令将构建 CentOS 8.2 映像并为 root 用户分配密码“centos”。您还可以从文本文件设置密码virt-builder centos-8.2 --root-password file:~/ostechnix.txt要禁用 root 密码请运行virt-builder centos-8.2 --root-password disabled锁定 root 帐户virt-builder centos-8.2 --root-password locked锁定 root 帐户并禁用 root 密码virt-builder centos-8.2 --root-password locked:disabled要分配 root 密码但锁定 root 帐户请使用以下选项--root-password locked:file:FILENAME --root-password locked:password:PASSWORD我们可以通过“passwd -u”命令解锁root用户后使用root密码。创建用户要在构建虚拟机映像时创建用户帐户请运行virt-builder centos-8.2 --firstboot-command useradd -m -p sk ; chage -d 0 sk上面的命令将创建一个名为“sk”的没有密码的用户并强制他在第一次登录时设置密码。设置主机名要将主机名设置为 VMvirt-builder centos-8.2 --hostname virt.ostechnix.local示例输出[ 4.7] Downloading: http://builder.libguestfs.org/centos-8.2.xz [ 7.2] Planning how to build this image [ 7.2] Uncompressing [ 31.0] Opening the new disk [ 41.9] Setting a random seed [ 42.0] Setting the hostname: virt.ostechnix.local [ 42.1] Setting passwords virt-builder: Setting random password of root to MRn7fj1GSaeCAHQx [ 44.4] Finishing off Output file: centos-8.2.img Output size: 6.0G Output format: raw Total usable space: 5.3G Free space: 4.0G (74%)在 VM 映像上安装软件要在虚拟机上安装 软件包请运行virt-builder debian-10 --install vim示例输出[ 5.8] Downloading: http://builder.libguestfs.org/debian-10.xz [ 7.4] Planning how to build this image [ 7.4] Uncompressing [ 25.3] Opening the new disk [ 29.7] Setting a random seed virt-builder: warning: random seed could not be set for this type of guest [ 29.8] Installing packages: vim [ 93.2] Setting passwords virt-builder: Setting random password of root to 45Hj5yxh8vRqLDcu [ 94.9] Finishing off Output file: debian-10.img Output size: 6.0G Output format: raw Total usable space: 5.8G Free space: 4.8G (82%)要安装多个软件包请在引号中提及它们并用逗号分隔如下所示virt-builder debian-10 --install apache2,htop更新虚拟机中的所有包virt-builder centos-8.2 --update如果您的虚拟机使用 SE Linux则需要在安装或更新软件包后进行 SELinux 重新标记virt-builder centos-8.2 --update --selinux-relabel自定义虚拟机镜像Virt-builder 有很多选项来定制镜像。例如您可以在虚拟机第一次启动时使用以下命令运行特定的命令/脚本virt-builder debian-10 --firstboot-command apt -y update要在虚拟机中添加一行请运行virt-builder centos-8.2 --append-line /etc/hosts:192.168.225.1 server.ostechnix.local缓存模板默认情况下所有模板第一次都会从网络下载。由于模板较大下载的模板会缓存在用户的主目录中。您可以使用以下命令打印缓存目录的详细信息以及当前缓存的模板virt-builder --print-cache示例输出cache directory: /home/sk/.cache/virt-builder [...] centos-7.8 x86_64 no centos-8.0 x86_64 no centos-8.2 x86_64 cached cirros-0.3.1 x86_64 no cirros-0.3.5 x86_64 no debian-10 x86_64 cached debian-6 x86_64 no debian-7 sparc64 no [...]您还可以通过手动查看缓存文件夹来验证它$ ls $HOME/.cache/virt-builder centos-8.2.x86_64.1 debian-10.x86_64.1要将所有可用模板下载到本地缓存文件夹请运行virt-builder --cache-all-templates如果您不想在构建图像时缓存模板请使用--no-cache选项。要删除所有缓存的模板请运行$ virt-builder --delete-cache [ 0.0] Deleting: /home/sk/.cache/virt-builder将磁盘映像导入虚拟机管理程序好吧您已经下载了所需的 操作系统并根据您的喜好对其进行了自定义。怎么办只需导入映像并使用新创建的磁盘映像和虚拟机管理程序运行虚拟机。我们已经编写了使用 Qcow2 映像创建 KVM 虚拟机的分步指南。本指南是专门为 Qcow2 编写的但导入.img格式的磁盘映像也是一样的。升级操作系统在Linux中使用Qcow2镜像创建KVM虚拟机Virt-builder 有数百个命令和选项。我在这里只介绍了基本命令。欲了解更多详细信息请参阅手册年龄。man virt-builder
返回列表