虚拟机与容器
本文介绍在 Ubuntu 26.04 上使用各种虚拟化和系统容器技术。
检查硬件虚拟化支持
在开始之前,确认 CPU 支持硬件虚拟化:
# 检查是否支持虚拟化
egrep -c '(vmx|svm)' /proc/cpuinfo输出大于 0 表示支持。还可以使用 cpu-checker:
sudo apt install cpu-checker -y
kvm-okKVM / QEMU
KVM(基于内核的虚拟机)是 Linux 内核内置的虚拟化方案,配合 QEMU 提供完整的虚拟化功能。
安装 KVM 和相关工具
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager -y将当前用户加入必要的用户组:
sudo usermod -aG libvirt $USER
sudo usermod -aG kvm $USER注销并重新登录以使组变更生效。
验证安装
# 检查 libvirt 服务状态
sudo systemctl status libvirtd
# 验证连接
virsh list --all使用 virt-manager(图形界面)
virt-managervirt-manager 提供直观的图形界面,可以方便地创建和管理虚拟机。
使用命令行创建虚拟机
# 创建磁盘镜像
qemu-img create -f qcow2 /var/lib/libvirt/images/ubuntu-vm.qcow2 40G
# 从 ISO 安装虚拟机
virt-install \
--name ubuntu-vm \
--ram 4096 \
--vcpus 2 \
--disk path=/var/lib/libvirt/images/ubuntu-vm.qcow2,size=40 \
--os-variant ubuntu26.04 \
--network bridge=virbr0 \
--graphics vnc \
--cdrom /path/to/ubuntu-26.04-desktop-amd64.isoNote
用 osinfo-query os | grep ubuntu 确认本机 osinfo-db 是否收录 ubuntu26.04。若尚未收录,可先升级 osinfo-db,或退而使用最接近的 ubuntu24.04,也可改用 --osinfo detect=on,require=off 让 virt-install 自动探测。
virsh 常用命令
# 列出所有虚拟机
virsh list --all
# 启动虚拟机
virsh start ubuntu-vm
# 关闭虚拟机
virsh shutdown ubuntu-vm
# 强制关闭
virsh destroy ubuntu-vm
# 暂停和恢复
virsh suspend ubuntu-vm
virsh resume ubuntu-vm
# 创建快照
virsh snapshot-create-as ubuntu-vm --name "clean-install"
virsh snapshot-list ubuntu-vm
virsh snapshot-revert ubuntu-vm --snapshotname "clean-install"
# 删除虚拟机
virsh undefine ubuntu-vm --remove-all-storageQEMU 直接使用
不通过 libvirt,直接使用 QEMU:
# 创建磁盘
qemu-img create -f qcow2 disk.qcow2 20G
# 启动虚拟机
qemu-system-x86_64 \
-enable-kvm \
-m 4G \
-smp 2 \
-hda disk.qcow2 \
-cdrom ubuntu.iso \
-boot d \
-net nic -net user,hostfwd=tcp::2222-:22VirtualBox
VirtualBox 是 Oracle 的开源虚拟化软件,提供简洁的图形界面。
安装 VirtualBox
# 方法一:从 Ubuntu 仓库安装
sudo apt install virtualbox -y
# 方法二:从 Oracle 官方仓库安装(版本更新)
wget -qO- https://www.virtualbox.org/download/oracle_vbox_2016.asc | sudo gpg --dearmor -o /etc/apt/keyrings/oracle-virtualbox.gpg
echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/oracle-virtualbox.gpg] https://download.virtualbox.org/virtualbox/debian $(lsb_release -cs) contrib" | sudo tee /etc/apt/sources.list.d/virtualbox.list
sudo apt update
# 安装 VirtualBox(请用 apt-cache search virtualbox 确认当前可用的版本包名,
# 例如 virtualbox-7.1 或更新的版本)
sudo apt install virtualbox-7.1 -y安装扩展包
扩展包提供 USB 3.0、RDP 远程桌面等功能:
# 下载对应版本的扩展包后安装
sudo VBoxManage extpack install Oracle_VirtualBox_Extension_Pack-*.vbox-extpackVBoxManage 命令行
# 列出虚拟机
VBoxManage list vms
# 启动虚拟机(无头模式)
VBoxManage startvm "vm-name" --type headless
# 关闭虚拟机
VBoxManage controlvm "vm-name" acpipowerbutton
# 创建快照
VBoxManage snapshot "vm-name" take "snapshot-name"LXD / LXC 系统容器
LXC 是 Linux 容器技术,LXD 是其管理守护进程,提供类似虚拟机的体验但更轻量。
安装 LXD
sudo snap install lxd初始化 LXD
lxd init --minimal或使用交互式配置获得更多选项:
lxd initLXD 基础操作
# 启动一个 Ubuntu 容器
lxc launch ubuntu:26.04 mycontainer
# 启动一个虚拟机(是的,LXD 也支持虚拟机)
lxc launch ubuntu:26.04 myvm --vm
# 列出实例
lxc list
# 进入容器
lxc exec mycontainer -- bash
# 推送和拉取文件
lxc file push local-file.txt mycontainer/root/
lxc file pull mycontainer/root/file.txt .
# 停止和删除
lxc stop mycontainer
lxc delete mycontainer
# 创建快照
lxc snapshot mycontainer snap0
lxc restore mycontainer snap0LXD 配置 Profile
# 查看默认配置
lxc profile show default
# 创建自定义配置
lxc profile create dev-profile
lxc profile set dev-profile limits.cpu 4
lxc profile set dev-profile limits.memory 8GB
# 使用自定义配置启动容器
lxc launch ubuntu:26.04 devbox --profile dev-profileIncus
Incus 是 LXD 的社区分支,由 Linux Containers 社区维护,功能相近但独立发展。
安装 Incus
# 添加 Zabbly 仓库(Incus 官方推荐)
curl -fsSL https://pkgs.zabbly.com/key.asc | sudo gpg --dearmor -o /etc/apt/keyrings/zabbly.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/zabbly.gpg] https://pkgs.zabbly.com/incus/stable $(. /etc/os-release && echo "$VERSION_CODENAME") main" | sudo tee /etc/apt/sources.list.d/zabbly-incus-stable.list
sudo apt update
sudo apt install incus -y初始化和使用
# 初始化
sudo incus admin init --minimal
# 将用户加入 incus-admin 组
sudo usermod -aG incus-admin $USER
newgrp incus-admin
# 使用方式与 LXD 类似
incus launch images:ubuntu/26.04 mycontainer
incus list
incus exec mycontainer -- bash
incus stop mycontainer
incus delete mycontainer从 LXD 迁移到 Incus
sudo incus admin migrate-lxd技术对比
| 特性 | KVM/QEMU | VirtualBox | LXD/Incus |
|---|---|---|---|
| 虚拟化类型 | 完全虚拟化 | 完全虚拟化 | 系统容器/虚拟机 |
| 性能 | 接近原生 | 较好 | 接近原生 |
| 隔离性 | 强 | 强 | 中等(容器)/强(虚拟机) |
| 资源占用 | 中等 | 较高 | 低(容器) |
| 适用场景 | 服务器、生产环境 | 桌面开发测试 | 开发环境、轻量隔离 |
根据使用场景选择合适的虚拟化方案:生产服务器首选 KVM,桌面用户可选 VirtualBox,开发隔离环境推荐 LXD 或 Incus。
Last updated on