Skip to Content
DocumentationDéveloppementMachines virtuelles et conteneurs

Machines virtuelles et conteneurs

Cet article couvre diverses technologies de virtualisation et de conteneur système disponibles sur Ubuntu 26.04.

Vérifier la prise en charge de la virtualisation matérielle

Avant de commencer, vérifiez que votre processeur prend en charge la virtualisation matérielle :

# Check for virtualization support egrep -c '(vmx|svm)' /proc/cpuinfo

Un résultat supérieur à 0 indique un support. Vous pouvez également utiliser cpu-checker :

sudo apt install cpu-checker -y kvm-ok

KVM/QEMU

KVM (Kernel-based Virtual Machine) est une solution de virtualisation intégrée au noyau Linux. Combiné avec QEMU, il offre des capacités de virtualisation complètes.

Installer KVM et les outils associés

sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager -y

Ajoutez l’utilisateur actuel aux groupes requis :

sudo usermod -aG libvirt $USER sudo usermod -aG kvm $USER

Déconnectez-vous et reconnectez-vous pour que les modifications du groupe prennent effet.

Vérifier l’installation

# Check libvirt service status sudo systemctl status libvirtd # Verify connection virsh list --all

Utilisation de virt-manager (GUI)

virt-manager

virt-manager fournit une interface graphique intuitive pour créer et gérer des machines virtuelles.

Créer une VM via la ligne de commande

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

Exécutez osinfo-query os | grep ubuntu pour confirmer si votre base de données osinfo locale inclut ubuntu26.04. Sinon, mettez à niveau osinfo-db, revenez au ubuntu24.04 le plus proche ou utilisez --osinfo detect=on,require=off pour laisser virt-install se détecter automatiquement.

Commandes virsh courantes

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

Utiliser QEMU directement

Sans libvirt, en utilisant directement 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

Boîte Virtuelle

VirtualBox est le logiciel de virtualisation open source d’Oracle avec une interface graphique épurée.

Installer 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

Installer le pack d’extensions

Le pack d’extension fournit USB 3.0, un bureau à distance RDP et d’autres fonctionnalités :

# Install the extension pack after downloading the matching version sudo VBoxManage extpack install Oracle_VirtualBox_Extension_Pack-*.vbox-extpack

Ligne de commande VBoxManage

# 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"

Conteneurs système LXD / LXC

LXC est une technologie de conteneur Linux et LXD est son démon de gestion, offrant une expérience similaire à celle d’une VM mais plus légère.

Installer LXD

sudo snap install lxd

Initialiser LXD

lxd init --minimal

Ou utilisez la configuration interactive pour plus d’options :

lxd init

LXD Opérations de base

# 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 snap0

Configuration du profil LXD

# 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

Enclume

Incus est un fork communautaire de LXD, maintenu par la communauté Linux Containers. Il a des fonctionnalités similaires mais est développé indépendamment.

Installer 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

Initialiser et utiliser

# 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 mycontainer

Migrer de LXD vers Incus

sudo incus admin migrate-lxd

Comparaison technologique

FonctionnalitéKVM/QEMUBoîte VirtuelleLXD/Incus
Type de virtualisationVirtualisation complèteVirtualisation complèteConteneurs système/VM
PerformanceQuasi-natifBienQuasi-natif
IsolementFortFortMoyen (conteneurs) / Fort (VM)
Utilisation des ressourcesMoyenPlus hautFaible (conteneurs)
Cas d’utilisationServeurs, productionDéveloppement/test de bureauEnvironnements de développement, isolation légère

Choisissez la bonne approche de virtualisation en fonction de votre cas d’utilisation : KVM pour les serveurs de production, VirtualBox pour les utilisateurs de bureau et LXD ou Incus pour les environnements d’isolation de développement.