Skip to Content
DocumentaciónDesarrolloMáquinas virtuales y contenedores

Máquinas virtuales y contenedores

Este artículo cubre varias tecnologías de virtualización y contenedores de sistemas disponibles en Ubuntu 26.04.

Verifique el soporte de virtualización de hardware

Antes de comenzar, confirme que su CPU admita la virtualización de hardware:

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

Un resultado mayor que 0 indica soporte. También puedes usar cpu-checker:

sudo apt install cpu-checker -y kvm-ok

KVM/QEMU

KVM (máquina virtual basada en kernel) es una solución de virtualización integrada en el kernel de Linux. Combinado con QEMU, proporciona capacidades completas de virtualización.

Instalar KVM y herramientas relacionadas

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

Agregue el usuario actual a los grupos requeridos:

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

Cierre sesión y vuelva a iniciarla para que los cambios del grupo surtan efecto.

Verificar la instalación

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

Usando virt-manager (GUI)

virt-manager

virt-manager proporciona una interfaz gráfica intuitiva para crear y administrar máquinas virtuales.

Crear una VM a través de la línea de comando

# 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

Ejecute osinfo-query os | grep ubuntu para confirmar si su osinfo-db local incluye ubuntu26.04. De lo contrario, actualice osinfo-db, recurra al ubuntu24.04 más cercano o use --osinfo detect=on,require=off para permitir que virt-install se detecte automáticamente.

Comandos virsh comunes

# 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

Usando QEMU directamente

Sin libvirt, usando QEMU directamente:

# 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

VirtualBox es el software de virtualización de código abierto de Oracle con una interfaz gráfica limpia.

Instalar 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

Instalar paquete de extensión

El paquete de extensión proporciona USB 3.0, escritorio remoto RDP y otras funciones:

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

Línea de comando 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"

LXD / Contenedores del sistema LXC

LXC es una tecnología de contenedor de Linux y LXD es su demonio de administración, que brinda una experiencia similar a la de una máquina virtual pero más liviana.

Instalar LXD

sudo snap install lxd

Inicializar LXD

lxd init --minimal

O utilice la configuración interactiva para obtener más opciones:

lxd init

LXD Operaciones básicas

# 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

LXD Configuración del perfil

# 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

Yunque

Incus es una bifurcación comunitaria de LXD, mantenida por la comunidad de contenedores de Linux. Tiene una funcionalidad similar pero se desarrolla de forma independiente.

Instalar yunque

# 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

Inicializar y usar

# 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

Migrar de LXD a Incus

sudo incus admin migrate-lxd

Comparación de tecnologías

CaracterísticaKVM/QEMUVirtualBoxLXD/Yunque
Tipo de virtualizaciónVirtualización completaVirtualización completaContenedores del sistema/VM
ActuaciónCasi nativoBienCasi nativo
AislamientoFuerteFuerteMedio (contenedores) / Fuerte (VM)
Uso de recursosMedioMás altoBajo (contenedores)
Casos de usoServidores, producción.Desarrollo/pruebas de escritorioEntornos de desarrollo, aislamiento ligero

Elija el enfoque de virtualización adecuado según su caso de uso: KVM para servidores de producción, VirtualBox para usuarios de escritorio y LXD o Incus para entornos de aislamiento de desarrollo.