Skip to content

lxc. Contenedores GNU/Linux

Introducción

lxc es un comando que actúa como cliente amigable de lxd (demonio de contenedores Linux).

¿Qué son los contenedores Linux? En la práctica equivalen a máquinas virtuales ligeras, ya que comparten el núcleo con el anfitrión, pero virtualizan el resto del sistema operativo.

Al compartir el núcleo:

  • se reducen las llamadas frente a la virtualización completa ya que hay menos cambios de contexto.
  • se reduce el consumo de recursos, pudiendo tener instancias con 256 MB sin problemas.
  • sólo podemos ejecutar instancias que compartan el núcleo, esto es, instancias GNU/Linux.

Dado ésto, están a medio camino entre los hipervisores tipo 1 y los contenedores Docker (o Podman, etc.).

Su campo de aplicación es para mejorar el rendimiento sobre soluciones de máquinas virtuales cuando requiramos soluciones completas de aplicaciones.

Dado su campo específico de aplicación deberemos tenerlo en cuenta para puestas en producción, pero no será analizado en profundidad en clases por poderlos sustituir con contenedores Docker o máquinas virtuales con Vagrant.

Trabajando con lxc

Este apartado está copiado integramente del libro por lo que doy todo el crédito a su autor Marcelo Horacio Fortino.

El objetivo de LXC (Linux Containers) es crear un ambiente lo más próximo posible a una instalación estándar de GNU/Linux pero sin precisar un kernel separado.

Palabras claves: lxc, lxc-containers.

Primero instalamos lxc:

sudo apt-get install lxc

Confirmamos si el kernel soporta lxc-containers:

lxc-checkconfig

Creamos el primer container:

sudo lxc-create -n container-test -t ubuntu

El usuário predeterminado es "ubuntu" con la clave "ubuntu" y para ser root dentro del container usamos sudo.

El container está alojado en /var/lib/lxc/ y su sistema raiz está en /var/lib/lxc//rootfs.

Para ver una lista de LXC containers en nuestro sistema:

sudo lxc-ls --fancy

Para iniciar un container:

lxc-start -n test-container -d

Para loguearse en el container:

lxc-console -n test-container

Una vez dentro, si queremos salir del container escribimos:

sudo poweroff

Para parar el container desde fuera del mismo:

lxc-stop -n test-container

Si queremos entrar por SSH al container primero averiguamos su IP:

sudo lcx-info -n test-container

y luego entramos con:

ssh ubuntu@<número de la IP>

Para eliminar el container:

lxc-destroy -n test-container

Para que el container se inicie automáticamente podemos hacer un enlace simbólico:

ln -s /var/lib/lxc/test-container/config /etc/lxc/auto/test-container.conf

Más información en: https://linuxcontainers.org/ (idioma inglés)

Fuentes: