LXC (linux containers) linux dentro de linux

MatrioskaTodo el mundo conoce las máquinas virtuales (VirtualBox, QEMU o VMware), es software que permite emular un entorno de hardware para instalar sistemas operativos en máquinas virtuales. Son muy útiles, pues dentro de una máquina de hardware, puedo tener decenas de máquinas virtuales donde instalar, por ejemplo servidores, de manera que cada uno quede encapsulado con todas las ventajas de administración y seguridad que eso conlleva.

LXC es algo parecido pero no es una máquina virtual, es más bien un entorno virtual que provee su propio entorno de procesos y redes. A diferencia de las máquinas virtuales, que necesitan un anfitrión de hardware con mucha memoria RAM, pues es el recurso principal que consumen, los contenedores linux (LXC) no consumen apenas recursos del anfitrión.

LXC funciona aprovechando una funcionalidad del núcleo Linux llamada cgroups, que está presente en el kernel desde la versión 2.6.29 (y por lo tanto en todas las versiones modernas 3.x). LXC es por lo tanto virtualización a nivel del sistema operativo.

LXC me permite tener una distro Linux dentro de otra distro Linux, que utilizará el kernel del anfitrión y la tarjeta de red, pero trabajará de manera encapsulada a todos los efectos, con su propia IP de red, su propia interfaz de red (encapsulada) y sus propios procesos (también enjaulados). Como se puede imaginar, esto es una maravilla de cara a tener dentro de un servidor Linux, decenas o centenares de contenedores linux, cada uno con su configuración, distro, versión, etc, etc, y cada uno perfectamente encapsulado. Puedo administrar todos ellos, por ejemplo, mediante SSH en remoto fácilmente.

Su interés a nivel empresarial es evidente, por la reducción de costes que supone frente a las máquinas virtuales y la facilidad de implementación así como de administración. Además de su gran utilidad para hacer test de seguridad en redes de todo tipo.

Desde el punto de vista didáctico, también resulta fascinante, pues es la mejor manera de tener una distro Linux dentro de la tuya para poder jugar, trastear y aprender, sin el más mínimo riesgo de estropear nada.

Por ejemplo, puedes probar Archlinux o Gentoo dentro de tu Ubuntu sin tener que instalar ninguno de los dos. Puedes tenerlos en 5 minutos listos para jugar con ellos y perderles el miedo.

************************************************

instalar LXC:

sudo apt install lxc bridge-utils libvirt-bin debootstrap (DEBIAN-UBUNTU-LINUXMINT)
sudo pacman -S lxc bridge-utils debootstrap (ARCH-ANTERGOS-MANJARO)
sudo zypper in lxc bridge-utils debootstrap (OPENSUSE)

************************************************

crear un contenedor LXC:

sudo lxc-create -t gentoo -n minigentoo (crea contendor tipo (-t) «gentoo» de nombre (-n) «minigentoo»
los tipos pueden ser: debian, archlinux, gentoo, fedora, centos, oracle, opensuse, ubuntu, un servidor sshd, etc, etc.
las plantillas (templates) de las distros que se pueden instalar están aquí:

/usr/share/lxc/templates/

************************************************

ver contenedores creados y su estado:
sudo lxc-ls -f      (lista los contenedores creados y su estado)

los contenedores están en:

/var/lib/lxc/

************************************************

ver información de un contenedor:

sudo lxc-info -n minigentoo      (me muestra información importante del contenedor, su IP, su PID, la memoria que está usando, etc.)

************************************************

arrancar y entrar en un contenedor:

sudo lxc-start -n minigentoo

arranca y ya tengo un login, en Gentoo:

user: root

pw: toor

(poner atención al crear un contenedor pues cada distro tiene su propio password de root, y al crear el contenedor te informa de ello.)

************************************************

arrancar un contenedor en segundo plano (no entra en él):

lxc-start -n minigentoo -d
puedo ver su estado ahora:

sudo lxc-info -n minigentoo      (me informa de que está funcionando, pero estoy fuera)

************************************************

abrir prompt de minigentoo (estando en segundo plano):

sudo lxc-attach -n minigentoo      (entro, me muestra el prompt como root)

************************************************

login en minigentoo (estando en segundo plano):

sudo lxc-console -n minigentoo

************************************************

cuando estás dentro de un contenedor es como estar en ese sistema operativo, por lo tanto si estás en un XLC Arch, funcionará pacman, o en Gentoo funcionará Portage… (con todo lo que eso significa).

para apagarlo:

sudo poweroff

😉

a disfrutar, confieso que para mí, los LXC son un vicio.

************************************************
Más info:

https://linuxcontainers.org/
https://wiki.debian.org/LXC
https://help.ubuntu.com/lts/serverguide/lxc.html
https://www.suse.com/documentation/sles11/singlehtml/lxc_quickstart/lxc_quickstart.html

gentoo-en-ubuntu
un contenedor LXC de Gentoo funcionado dentro de Ubuntu 14.04

8 opiniones en “LXC (linux containers) linux dentro de linux”

  1. Saludos…!
    Que tal…!
    Wooow…! Se ve interesante… Lo voy a probar…
    A fin de cuentas me quedé con la distro Manjaro… Espero poder probar Gentoo con esto…
    :D…
    Gracias por el dato…! Que la pases bien…! Luego comento a ver cómo me va… :D…

  2. Hola muchas gracias por la información, lo he intentado hacer y me sale esto:
    sudo lxc-create -t archlinux -n miniarch
    /usr/share/lxc/templates/lxc-archlinux: línea 53: pacman: no se encontró la orden
    network link interface, br0, does not exist
    lxc_container: container creation template for miniarch failed
    lxc_container: Error creating container miniarch

    1. pues no puedo decirte, hace unos meses que no he trasteado con los LXC, pero creo que se actualizaron algunos comandos en una versión más reciente, por lo que te comiendo que mires la documentación de LXC https://linuxcontainers.org/ así como la de tu distro linux en relación a LXC. Un saludo.

      1. Muchas gracias por tu respuesta, le echaré un vistazo, he conseguido montar una de debian, he tenido que configurar varias cosas pero todo bien.

Deja un comentario