仮想マシンとコンテナ
この記事では、Ubuntu 26.04 で利用可能なさまざまな仮想化およびシステム コンテナー テクノロジについて説明します。
ハードウェア仮想化サポートを確認する
開始する前に、CPU がハードウェア仮想化をサポートしていることを確認してください。
# Check for virtualization support
egrep -c '(vmx|svm)' /proc/cpuinfo0 より大きい結果はサポートを示します。 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グループの変更を有効にするには、ログアウトしてから再度ログインします。
インストールの検証
# Check libvirt service status
sudo systemctl status libvirtd
# Verify connection
virsh list --allvirt-manager の使用 (GUI)
virt-managervirt-manager は、仮想マシンを作成および管理するための直感的なグラフィカル インターフェイスを提供します。
コマンドライン経由でVMを作成する
# Create a disk image
qemu-img create -f qcow2 /var/lib/libvirt/images/ubuntu-vm.qcow2 40G
# Install a VM from 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.isoosinfo-query os | grep ubuntu を実行して、ローカル osinfo-db に ubuntu26.04 が含まれているかどうかを確認します。そうでない場合は、osinfo-db をアップグレードするか、最も近い ubuntu24.04 にフォールバックするか、--osinfo detect=on,require=off を使用して virt-install が自動検出できるようにします。
一般的な virsh コマンド
# List all VMs
virsh list --all
# Start a VM
virsh start ubuntu-vm
# Shut down a VM
virsh shutdown ubuntu-vm
# Force stop
virsh destroy ubuntu-vm
# Suspend and resume
virsh suspend ubuntu-vm
virsh resume ubuntu-vm
# Create snapshots
virsh snapshot-create-as ubuntu-vm --name "clean-install"
virsh snapshot-list ubuntu-vm
virsh snapshot-revert ubuntu-vm --snapshotname "clean-install"
# Delete a VM
virsh undefine ubuntu-vm --remove-all-storageQEMU を直接使用する
libvirt を使用せず、QEMU を直接使用します。
# Create a disk
qemu-img create -f qcow2 disk.qcow2 20G
# Start a VM
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 は、クリーンなグラフィカル インターフェイスを備えた Oracle のオープンソース仮想化ソフトウェアです。
VirtualBoxをインストールする
# Method 1: Install from Ubuntu repository
sudo apt install virtualbox -y
# Method 2: Install from Oracle's official repository (newer version)
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
# Install VirtualBox (run apt-cache search virtualbox to confirm the current
# available package name, e.g. virtualbox-7.1 or a newer version)
sudo apt install virtualbox-7.1 -y拡張パックをインストールする
拡張パックは、USB 3.0、RDP リモート デスクトップ、およびその他の機能を提供します。
# Install the extension pack after downloading the matching version
sudo VBoxManage extpack install Oracle_VirtualBox_Extension_Pack-*.vbox-extpackVBoxManage コマンドライン
# List VMs
VBoxManage list vms
# Start a VM (headless mode)
VBoxManage startvm "vm-name" --type headless
# Shut down a VM
VBoxManage controlvm "vm-name" acpipowerbutton
# Create a snapshot
VBoxManage snapshot "vm-name" take "snapshot-name"LXD / LXC システムコンテナ
LXC は Linux コンテナー テクノロジーであり、LXD はその管理デーモンであり、VM のようなエクスペリエンスを提供しますが、より軽量です。
LXD をインストールする
sudo snap install lxdLXDを初期化します
lxd init --minimalまたは、対話型構成を使用してその他のオプションを選択することもできます。
lxd initLXD 基本操作
# Launch an Ubuntu container
lxc launch ubuntu:26.04 mycontainer
# Launch a VM (yes, LXD supports VMs too)
lxc launch ubuntu:26.04 myvm --vm
# List instances
lxc list
# Enter a container
lxc exec mycontainer -- bash
# Push and pull files
lxc file push local-file.txt mycontainer/root/
lxc file pull mycontainer/root/file.txt .
# Stop and delete
lxc stop mycontainer
lxc delete mycontainer
# Create snapshots
lxc snapshot mycontainer snap0
lxc restore mycontainer snap0LXD プロファイル構成
# View default profile
lxc profile show default
# Create a custom profile
lxc profile create dev-profile
lxc profile set dev-profile limits.cpu 4
lxc profile set dev-profile limits.memory 8GB
# Launch a container with a custom profile
lxc launch ubuntu:26.04 devbox --profile dev-profileきぬたぬき
Incus は、Linux Containers コミュニティによって維持されている LXD のコミュニティ フォークです。同様の機能がありますが、独自に開発されています。
Incus をインストールする
# Add the Zabbly repository (officially recommended for 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初期化して使用する
# Initialize
sudo incus admin init --minimal
# Add user to the incus-admin group
sudo usermod -aG incus-admin $USER
newgrp incus-admin
# Usage is similar to LXD
incus launch images:ubuntu/26.04 mycontainer
incus list
incus exec mycontainer -- bash
incus stop mycontainer
incus delete mycontainerLXD から Incus への移行
sudo incus admin migrate-lxd技術比較
| 特徴 | KVM/QEMU | バーチャルボックス | LXD/インカス |
|---|---|---|---|
| 仮想化の種類 | 完全仮想化 | 完全仮想化 | システムコンテナ/VM |
| パフォーマンス | ネイティブに近い | 良い | ネイティブに近い |
| 分離 | 強い | 強い | 中 (コンテナ) / 強 (VM) |
| リソースの使用量 | 中くらい | より高い | 低(コンテナ) |
| ユースケース | サーバー、本番環境 | デスクトップの開発/テスト | 開発環境、軽量分離 |
実稼働サーバーには KVM、デスクトップ ユーザーには VirtualBox、開発分離環境には LXD または Incus など、ユース ケースに基づいて適切な仮想化アプローチを選択してください。