LXD\Incus y LXC.¶
LXC.¶
-
LXC (Linux Containers) es una tecnología de contenedores, por tanto no necesita ejecutar un kernel independiente , se utiliza el kernel Linux del sistema anfitrión.
-
No obstante trabajar directamente con LXC puede resultar relativamente complejo y para ello existe LXD.
LXD\Incus.¶
LXD es un gestor de contenedores construido sobre LXC:
💥 Crear contenedores.
💥 Eliminar contenedores.
💥 Clonar contenedores.
💥 Crear instantáneas (snapshots).
💥 Gestionar imágenes.
💥 Administrar plantillas de contenedores.
LXC vs Docker.¶
-
LXC virtualiza un sistema completo, lo que hace más robusto para hacer tareas de administrador de sistemas o si es necesario combinar varios servicios (ssh, apache, gestión de usuarios, samba) dentro del mismo contenedor.
-
Docker es más utilizado cuando queremos desplegar un único servicio o aplicación (un servicio web, un wordpress, una base de datos, etc).
| Característica | LXC | Docker |
|---|---|---|
| Tipo | Contenedor de sistema | Contenedor de aplicaciones |
| Objetivo | Ejecutar un sistema Linux completo | Ejecutar una aplicación y sus dependencias |
| Init / servicios | Puede ejecutar systemd | Normalmente ejecuta un proceso principal |
📌 Ejemplo de uso de LXC.¶
📌 Ejemplo de uso de Docker.¶
Instalación de LXD.¶
sudo apt update
sudo apt install incus -y
# Es necesario añadir el usuario al grupo incus.
usermod XXXX -aG incus
Combandos Básicos.¶
Crear un contenedor.¶
#Estamos creando un contenedor llamado cliente1 con una imagen de ubuntu24.04
incus launch images:ubuntu/24.04 cliente1
¿Cómo sabemos qué imágenes podemos usar para crear un contenedor?
Podemos ver las imágenes disponibles en https://images.linuxcontainers.org (incus remote list).
Listar los contenedores.¶
incus list
Parar, reiniciar o arrancar un contenedor.¶
#Parar:
incus stop cliente1
#Arrancar:
incus start cliente1
#Reiniciar:
incus restart cliente1
#Elimninar:
incus delete cliente1
Si eliminamos un contenedor perderemos sus datos, no estarán almacenados en la máquina anfitriona.
Acceder al contenedor.¶
#Acceder al terminal como root del contenedor cliente1.
incus exec cliente1 -- bash
#Acceder al terminal como un usuario previamente creado en el contenedor.
#El usuario es alumno y el contenedor cliente1.
incus exec cliente1 -- sudo -u alumno -i
Copiar un contenedor.¶
- Podemos hacer una copia entera de un contenedor.
incus copy cliente1 cliente2
¿Qué ocurre con la dirección IP?
Si usamos DHCP no hay problema, pero si teníamos una IP fija configurada tendremos un problema de IP duplicada.
- También se puede copiar un fichero de un contenedor a la máquina anfitriona.
#Ejemplo donde me llevo el fichero index.html del contenedor cliente1 a mi directorio actual desde donde lanzo el comando.
incus file pull cliente1/var/www/html/index.html .
#Mismo ejemplo pero el destino es la carpeta /home/salva de la máquina anfitriona.
incus file pull cliente1/var/www/html/index.html /home/salva/
Exportar e Importar un contenedor.¶
- Si queremos llevarnos un contenedor a otro ordenador podemos hacer una copia en un fichero comprimido y subirlo a la nube o a un USB.
#Cliente1 es el contenedor y cliente1.tar.gz es el fichero comprimido que podremos llevarnos a otro PC.
incus export cliente1 cliente1.tar.gz
- Si quisiéramos restaurar un contenedor a partir de un fichero comprimido.
incus import cliente1.tar.gz