Distrobox, la herramienta de contenedores que permite ejecutar distribuciones fácilmente

Aprovechando el reciente lanzamiento de la versión 1.6.0, en esta ocasión presentaremos y mencionaremos los aspectos más básicos de Distrobox, que según su documentación oficial “es un envoltorio (wrapper) elegante para Podman, Docker o Lilipod”. Y permite “crear e iniciar contenedores altamente integrados con los hosts”.Distrobox

Dicho de una manera que suene un poco menos áspera, Distrobox proporciona un entorno basado en Open Container Initiative (OCI) y que permite crear contenedores basados en muchas distribuciones con acceso al directorio de usuario, los sockets de Wayland y Xorg, redes, dispositivos extraíbles como unidades USB, el journal de systemd, el agente de SSH, D-Bus y más cosas. Frente al uso de Podman y Docker y desde la perspectiva de un usuario de escritorio, destaca por facilitar la ejecución de aplicaciones y componentes gráficos dentro de un contenedor.

En la última década, sobre todo a partir de la expansión de Docker, el uso de los contenedores se ha popularizado mucho como forma de poner en funcionamiento múltiples instancias de un sistema operativo en una misma máquina sin tener que emplear la gran cantidad de recursos que necesita una máquina virtual.

Por otro lado está el ascenso de sistemas operativos inmutables como openSUSE MicroOS (en un futuro Aeon y Kalpa), Fedora Silverbue y Endless, que se apoyan fuertemente en los contenedores como medio adicional para separar las aplicaciones del sistema operativo y para la obtención de entornos mutables con privilegios locales. Nada impide usar Distrobox sobre un sistema Linux “tradicional” y mutable, pero ahí los casos de uso se limitan debido a que el usuario puede modificar desde un principio el sistema base a su voluntad.

Distrobox tiene un rival, Toolbox, el cual es similar, pero con el foco más puesto en OSTree en general, el mecanismo de actualizaciones atómicas mediante el cual sistemas como Fedora CoreOS, Fedora IoT, Silverblue y Endless adquieren la inmutabilidad, y el ecosistema de Red Hat en particular, así que se encuentra preinstalado en los sistemas proporcionados por el proyecto Fedora (sí, también los mutables).

A pesar de las similitudes, Distrobox termina siendo más fácil para un novato gracias a un ecosistema más abierto que facilita la configuración de contenedores de distribuciones diferentes a la presente localmente y a una curva de aprendizaje más suave. Aunque está disponible desde los repositorios de muchas distribuciones debido a que es software libre, una manera fácil de disponer de él out of the box es emplear openSUSE MicroOS, donde está de forma preinstalada, así que este va a ser el sistema que vamos a emplear para mostrar las partes básicas.

Partes básicas de la creación de contenedores con Distrobox

El propósito de este artículo no es convertir a nadie en un experto, pero sí enseñar lo básico para que un usuario pueda defenderse con Distrobox y quién sabe, puede que con un poco de imaginación sea capaz de darle alguna utilidad, cosa que es fácil de encontrar cuando descubre la enorme flexibilidad que aporta en materia de herramientas para programación, ya que es posible tener un entorno estanco como el de Debian Stable sobre un sistema bleeding edge como lo es openSUSE MicroOS.

La forma más sencilla de crear un contenedor en Distrobox es la siguiente:

distrobox-create

En este caso, el resultado es la creación de un contenedor basado en openSUSE Tumbleweed, al cual se accede directamente justo después y de forma automática. Una peculiaridad de Distrobox es que añade una entrada en el lanzador del sistema anfitrión para acceder directamente a cada contenedor creado con él, lo cual resulta cómodo y fácil para cualquier usuario.

Si el usuario quiere identificar mejor los contenedores que va creando, puede asignarles un nombre con el argumento –name.

distrobox-create –name contenedor2

Al primer contenedor se la ha asignado de manera automática el nombre de tumbleweed, así que para acceder a él hay que hacer lo siguiente (también vale la entrada creada en el lanzador del sistema anfitrión):

distrobox-enter –name tumbleweed

sudo zypper install gcc

Para salirse es tan sencillo como ejecutar el comando exit, pero esto no detiene el contenedor, sino que devuelve el foco al sistema anfitrión mientras el contenedor sigue ejecutándose en segundo plano. Si se quiere detener un contenedor en ejecución hay que introducir lo siguiente después de exit:

distrobox-stop tumbleweed

Para acceder al segundo contenedor creado la lógica es prácticamente la misma, pero cambiando el nombre de tumbleweed por el de contenedor2:

distrobox-enter –name contenedor2

La orden exit sirve para devolver el foco al sistema anfitrión (o cerrar la ventana con la línea de comandos si se ha utilizado la entrada del lanzador) y para detener el contenedor de verdad se ejecuta esto:

distrobox-stop contenedor2

Qué novedades ha traído Distrobox 1.6?

Distrobox 1.6 ha traído como novedades principales el soporte para Lilipod; una mejor integración con NVIDIA, principalmente CUDA; mejoras en el manejo desde la shell del usuario, por lo que ahora siempre se respeta el chsh hecho dentro del contenedor; los contenedores con permisos de root configuran correctamente la contraseña de usuario para sudo; mejoras para los soportes de sytemd y OpenRC; además de otras cosas.

Fuentes: MuyLinux y LinuxParty.