Skip to Content
文档开发虚拟机与容器

虚拟机与容器

本文介绍在 Ubuntu 26.04 上使用各种虚拟化和系统容器技术。

检查硬件虚拟化支持

在开始之前,确认 CPU 支持硬件虚拟化:

# 检查是否支持虚拟化 egrep -c '(vmx|svm)' /proc/cpuinfo

输出大于 0 表示支持。还可以使用 cpu-checker:

sudo apt install cpu-checker -y kvm-ok

KVM / 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-manager

virt-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.iso
Note

用 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-storage

QEMU 直接使用

不通过 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-:22

VirtualBox

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-extpack

VBoxManage 命令行

# 列出虚拟机 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 init

LXD 基础操作

# 启动一个 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 snap0

LXD 配置 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-profile

Incus

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/QEMUVirtualBoxLXD/Incus
虚拟化类型完全虚拟化完全虚拟化系统容器/虚拟机
性能接近原生较好接近原生
隔离性强强中等(容器)/强(虚拟机)
资源占用中等较高低(容器)
适用场景服务器、生产环境桌面开发测试开发环境、轻量隔离

根据使用场景选择合适的虚拟化方案:生产服务器首选 KVM,桌面用户可选 VirtualBox,开发隔离环境推荐 LXD 或 Incus。

Last updated on