MuyLinux Eduardo Medina  

Conoce 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 crear e iniciar contenedores altamente integrados con los hosts”.

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, la base de datos de /dev y udev 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.

Creando un contenedor de Distrobox

Contenedores de Distrobox desde el lanzador del sistema anfitrión

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

Accediendo a un contenedor de Distrobox

Ya dentro del contenedor de Tumbleweed, es posible instalar paquetes mediante Zypper. Por ejemplo, aquí instalo el compilador GCC.

sudo zypper install gcc

Instalando GCC desde un contenedor de Distrobox basado en openSUSE Tumbleweed

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

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

Ahora vamos a dar un giro de tuerca más mediante la creación de un contenedor basado en Debian 12 Bookworm y con un nombre establecido por nosotros:

distrobox-create --name contedebian12 --image debian:12

Creando un contenedor de Distrobox basado en Debian 12 Bookworm

En este caso el contenedor se configura la primera vez que se accede a él:

distrobox-enter --name contedebian12

Accediendo a un contenedor de Distrobox basado en Debian 12 Bookworm

Una vez dentro, se puede usar APT de forma bastante normal, así que a modo de ejemplo instalaremos los componentes necesarios para compilar Rust, ese lenguaje de programación que tanto está dando que hablar en los últimos tiempos:

sudo apt update

sudo apt install rustc cargo meson

Tras instalar los componentes para compilar Rust, hemos ejecutado exit para poner el foco en el sistema anfitrión, instalado la versión Flatpak de GNOME Builder, creado un proyecto de herramienta de línea de comandos basado en Rust y hecho la ruta del desplegable que hay justo a la derecha del icono del martillo > “Configurar proyecto” > “Default” > seleccionar contedebian12 como tiempo de ejecución > Pulsar sobre el botón “Activar” que aparece más arriba > cerrar la ventana.

Configurar GNOME Builder para que haga uso de un contenedor de Distrobox para compilar Rust

Para apagar o cerrar el contenedor basado en Debian 12 Bookworm, solo hay que ser seguir el mismo procedimiento que con los contenedores de Tumbleweed, pero sustituyendo el nombre:

distrobox-stop contedebian12

Listando y borrando contenedores de Distrobox

Listar los contenedores de Distrobox presentes en la máquina anfitriona es bastante sencillo:

distrobox-list

Aquí hay dos contenedores apagados, tumbleweed y contedebian12, y uno encendido, contenedor2. El estado es fácil de distinguir en una terminal gráfica a través de los colores, ya que lo apagados tienen las letras en un color marrón-naranja y los encendidos están en verde. Nada que no se pueda deducir con un poco de lógica.

En este caso vamos a borrar el contenedor tumbleweed debido a que su nombre es excesivamente genérico, por lo que cuesta más deducir el propósito que tiene (ahí radica la fuerza del nombre). Para ello hay que introducir lo siguiente:

distrobox-rm tumbleweed

Tras realizar el proceso de borrado, el contenedor ya no debería ser listado nunca más y su entrada en el lanzador del sistema tendría que desaparecer si todo el proceso se hace de forma correcta.

Eliminando un contenedor de Distrobox

Exportando aplicaciones en Distrobox

Una de las características más interesantes de Distrobox es la capacidad de exportar aplicaciones instaladas en un contenedor para que sean accesibles a través del lanzador del sistema anfitrión, lo que puede contribuir a agilizar el uso una vez se haya configurado todo lo necesario. Con el fin de seguir usando dos distribuciones distintas, continuaremos con el contenedor contedebian12 sobre openSUSE MicroOS:

distrobox-enter --name contedebian12

Instalamos la compilación de OBS Studio presente en los repositorios de Debian 12 Bookworm con APT:

sudo apt update

sudo apt install obs-studio

Tras llevarse a cabo el proceso de instalación de la aplicación, el cual puede requerir de tiempo debido a la gran cantidad de dependencias necesarias, es posible exportarla ejecutando lo siguiente desde dentro del propio contenedor:

distrobox-export --app obs

Exportar una aplicación en Distrobox

Aplicación exportada de Distrobox

Si se quiere borrar la aplicación del lanzador del sistema anfitrión, el proceso a seguir es este:

distrobox-export --app obs --delete

Creando un contenedor de Distrobox con permisos de root

Distrobox permite crear contenedores con permisos de root para así ejecutar en mejores condiciones programas que pueden requerir de mayores privilegios, como por ejemplos los suministrados por el paquete android-tools. Sin embargo, es importante tener en cuenta que estos contenedores no aparecen en el lanzador del sistema anfitrión y que en consecuencia deben ser empleados íntegramente desde la línea de comandos.

Para crear un contenedor con permisos de root volveremos a emplear uno basado en Tumbleweed. Su creación se hace de la siguiente manera para luego tener que introducir la contraseña del superusuario:

distrobox-create --name tumbleroot --root

Tratar con los contenedores con permisos de root requiere siempre de introducir el argumento --root en el comando, incluso para listar y acceder.

Contenedor de Distrobox con permisos de root

El acceso a un contenedor de Distrobox con permisos de root se hace así:

distrobox-enter tumbleroot --root

Y el apagado también requiere del argumento --root después de salir con el comando exit:

distrobox-stop tumbleroot --root

¿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.

Todos los detalles están disponibles en las notas de lanzamiento publicadas en el repositorio de GitHub, mientras que la herramienta, si no se quiere pasar por el tortuoso proceso de compilación, sería preferible emplearla desde una distribución rolling release y bleeding edge, principalmente openSUSE MicroOS, donde todo viene preconfigurado para que el usuario no tenga que hacer nada.

La entrada Conoce Distrobox, la herramienta de contenedores que permite ejecutar distribuciones fácilmente es original de MuyLinux

Leave A Comment

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.