Distrobox es una herramienta que le permite crear y administrar entornos de desarrollo basados en contenedores sin privilegios de root.
Distrobox puede usar cualquiera podman o estibador para crear contenedores utilizando la distribución de Linux de su elección.
El contenedor creado estará estrechamente integrado con el host, lo que permitirá compartir el directorio HOME del usuario, almacenamiento externo, dispositivos USB externos, aplicaciones gráficas (X11/Wayland) y audio.
Como proyecto, está inspirado en Container Toolbx (¡todos los accesorios para ellos!), pero pretende tener una compatibilidad más amplia con hosts y contenedores, sin tener que requerir una imagen dedicada para usar en Distrobox.
Se divide en 4 partes:
- distrobox-crear – crea el contenedor
- distrobox-enter – para entrar en el contenedor
- distrobox-esto t – es el punto de entrada del contenedor (no destinado a ser utilizado manualmente)
- distribución-exportación – está diseñado para usarse dentro del contenedor, útil para exportar aplicaciones y servicios desde el contenedor al host
Hoy veremos cómo usarlo en Fedora (Workstation y Silverblue/Kinoite) para tener diversos entornos basados en múltiples distribuciones de Linux, directamente en su terminal.
¿Por qué querrías usar Distrobox?
El proyecto Container Toolbx ya aborda en gran medida el uso de contenedores para entornos de desarrollo en la terminal, pero a veces puede tener la necesidad de una distribución de Linux específica, o exportar una aplicación o un servicio desde adentro al contenedor, de regreso al host.
En términos generales, es una herramienta que resuelve algunos problemas como:
- Proporcione un entorno mutable en un sistema operativo inmutable, como Endless OS, Fedora Silverblue, OpenSUSE MicroOS o SteamOS3
- Proporcione un entorno privilegiado localmente para configuraciones sudoless (por ejemplo, computadoras portátiles proporcionadas por la empresa, razones de seguridad, etc.)
- Para mezclar y combinar un sistema base estable (p. ej., Debian Stable, Ubuntu LTS, Red Hat) con un entorno de última generación para desarrollo o juegos (p. ej., Arch u OpenSUSE Tumbleweed o Fedora con la última Mesa)
- Aproveche la gran cantidad de imágenes de distribución seleccionadas para docker/podman para administrar múltiples entornos
¿En qué se diferencia de Toolbx?
Distrobox tiene como objetivo mantener una amplia compatibilidad con las distribuciones tanto en el lado del host como en el lado del contenedor mediante el uso de imágenes OCI de la distribución oficial para los contenedores. Admite todas las distribuciones principales y mantiene una tabla seleccionada de imágenes de contenedores compatibles y probadas.
Instalación
Instalar Distrobox es bastante sencillo, simplemente puede usar el siguiente comando:
curl https://raw.githubusercontent.com/89luca89/distrobox/main/install | sudo sh
O si no quiere (o no puede) usar sudopuedes instalarlo sin permisos de root:
curl https://raw.githubusercontent.com/89luca89/distrobox/main/install | sh -s -- -p ~/.local/bin/
También está disponible en copr:
sudo dnf copr enable alciregi/distrobox sudo dnf install distrobox
Distrobox depende de Podman o Docker para funcionar. Hoy exploraremos la podman ruta.
En Silverblue/Kinoite ya está listo, en Workstation o Spin necesita instalar podman, así que ejecute:
sudo dnf install podman
Empezando
Para comenzar a usar Distrobox, simplemente puede escribir:
[email protected]:~$ distrobox-create
para crear su primer contenedor. De forma predeterminada, utiliza la imagen fedora-toolbox 35.
Puede especificar un nombre personalizado y una imagen pasando las banderas:
[email protected]:~$ distrobox-create --name ubuntu-20 --image ubuntu:20.04
El comando anterior creará un cuadro de distribución basado en la imagen OCI simple de ubuntu 20 .
Puede utilizar un ecosistema diverso de distribuciones de varios registros. Para examplees posible que queramos usar aún más software de última generación de ORO :
[email protected]:~$ distrobox-create --name arch-distrobox --image archlinux:latest
O queremos usar una aplicación antigua que solo es compatible con Debian 8:
[email protected]:~$ distrobox-create --name debian8-distrobox --image debian:8
En caso de que la imagen del contenedor no esté presente en el host, se le pedirá que la descargue durante la creación del cuadro de distribución.
Una vez finalizada la creación, puede simplemente
[email protected]:~$ distrobox-enter --name arch-distrobox
Para entrar en el contenedor y empezar a jugar.
Jugando en el contenedor
Ahora que estamos dentro de nuestra distrobox, podemos proceder a personalizarla tanto como queramos, por example podemos instalar ese buen paquete que solo está en AUR:
Ahora podemos simplemente lanzar nuestra aplicación para usarla como una aplicación normal:

Exportación desde el contenedor al host
En caso de que instalemos algo que usamos mucho desde dentro de la distrobox, podemos exportarlo de nuevo al host para usarlo más fácilmente, sin tener que ejecutarlos cada vez desde la terminal.
Nosotros podemos usar distribución-exportación para exportar nuestra aplicación de vuelta al host, por example:
[email protected]:~$ distrobox-enter --name arch-distrobox [email protected]:~$ distrobox-export --app atom
Resultará en:

Ahora la aplicación se comporta y aparece como una aplicación gráfica normalmente instalada, con integración de iconos, temas y fuentes con el host.
Pero podemos exportar también simple binarios y servicios del sistema .
Digamos que desea instalar Syncthing desde los repositorios de Ubuntu en su Fedora Sistema azul plateado. Simplemente ejecute:
[email protected]:~$ distrobox-enter --name ubuntu-21 [email protected]:~$ sudo apt install syncthing
Ahora exporte el servicio de sincronización desde el contenedor al host ejecutando:
[email protected]:~$ distrobox-export --service [email protected] --extra-flags Service [email protected] successfully exported. OK [email protected] will appear in your services list in a few seconds. To check the status, run: systemctl --user status [email protected] To start it, run: systemctl --user start [email protected] To start it at login, run: systemctl --user enable [email protected]
Ahora, de vuelta en el host, puede ejecutar:
[email protected]:~$ systemctl --user enable --now [email protected]$USER
Y estás listo para irte:
[email protected]:~$ systemctl --user status [email protected] ● [email protected] - Syncthing - Open Source Continuous File Synchronization for luca.di.maio Loaded: loaded (/home/luca-linux/.config/systemd/user/[email protected]; enabled; vendor preset: enabled) Active: active (running) since Wed 2021-12-22 18:10:56 CET; 1 day 2h ago Docs: man:syncthing(1) Main PID: 1210423 (distrobox-enter) CGroup: /user.slice/user-1000.slice/[email protected]/ubuntux2d22x2dsyncthing.slice/[email protected] ├─1210423 /bin/sh /home/luca-linux/.local/bin/distrobox-enter -H -n ubuntu-21 -- /usr/bin/syncthing -no-browser -no-restart -logflags=0 -allow-newer-config └─1210445 podman --remote exec --user=luca-linux --workdir=/home/luca-linux [...] [....]
Instalar una aplicación antigua o no disponible
¿Qué sucede si necesita específicamente una aplicación antigua en su nuevo sistema? ¿Realmente necesitas ese buen viejo debut de 2014 y no hay Flatpak disponible? Puedes recurrir a Distrobox:
[email protected]:~$ distrobox-create --name old-ubuntu --image ubuntu:14. [email protected]:~$ distrobox-enter --name old- [email protected]:~$ sudo dpkg -i ./that-old-program. [email protected]:~$ distrobox-export --app that-old-program [email protected]:~$ distrobox-export --bin /usr/bin/that-old-program --export-path ~/.local/bin
Ahora tiene su entorno clásico e instala ese viejo paquete deb que encontró en línea sin perder el tiempo con alien, old glibc o ensuciar su sistema operativo principal.
Esto también es útil para aplicaciones que no están empaquetadas en rpm y no ofrecen Flatpak.
Salir de un cuadro de distribución
En cualquier momento puede salir del cuadro de distribución simplemente usando salir o presionando Ctrl+D:
[email protected]:~$ hostname x250 [email protected]:~$ distrobox-enter [email protected]:~$ hostname fedora-toolbox-35 [email protected]:~$ exit logout [email protected]:~$
Ejecutar comandos directamente en un distrobox
Puede especificar comandos personalizados para ejecutar en el cuadro de distribución en lugar del shell.
Para example:
[email protected]:~$ distrobox-enter --name fedora-toolbox-35 -- sudo dnf update -y Fedora 35 - x86_64 1.4 MB/s | 79 MB 00:56 Fedora 35 openh264 (From Cisco) - x86_64 2.0 kB/s | 2.5 kB 00:01 Fedora Modular 35 - x86_ 1.3 MB/s | 3.3 MB 00:02 Fedora 35 - x86_64 - Updates 2.3 MB/s | 17 MB 00:07 Fedora Modular 35 - x86_64 - Updates 1.2 MB/s | 2.8 MB 00:02 Dependencies resolved. [...]
Esto podría ser útil en scripts, y es usado por el distribución-exportación utilidad para integrar las exportaciones de contenedores con el host.
Consejos y trucos
Como habrá notado al leer este artículo, distrobox admite diferentes distribuciones de Linux para sus contenedores.
Puede encontrar una lista completa aquí en la página del proyecto: https://github.com/89luca89/distrobox#containers-distros.
Es compatible con todas las distribuciones principales, desde las versiones antiguas hasta las súper nuevas, como
- Debian: de 8 a actual inestable (y todos los derivados)
- Ubuntu – del 14.04 al 22.04
- Centos /Red Hat/Alma Linux/Rocky Linux/Amazon Linux – de 7 a 8 y stream 8 y 9
- Fedora (probado 30 a 35)
- Archilinux
- Linux alpino
- Slackware
- Vacío
- Kali Linux (si quieres tus cosas de pentesting en Silverblue)
Esto le brinda la flexibilidad de usar cualquier tipo de software dentro de cualquier distribución de su elección.
Duplicar un cuadro de distribución existente
Es útil tener también la capacidad de duplicar su distrobox existente. Esto es útil durante para example actualizaciones de distrobox, o para cambiar el nombre de un distrobox, o simplemente tomar una instantánea y guardar la imagen.
[email protected]:~$ distrobox-create --name cloned-arch --clone arch-distrobox [email protected]:~$ distrobox-enter --name cloned-arch [email protected]:~$
Hacer una copia de seguridad y restaurar una caja de distribución
Para guardar, exportar y reutilizar un contenedor ya configurado, puede aprovechar podman save junto con podman import para crear instantáneas de su entorno.
Para guardar un contenedor en una imagen con podman:
podman container commit -p distrobox_name image_name_you_choose podman save image_name_you_choose:latest | gzip >image_name_you_choose.tar.gz
Esto creará un tar.gz del contenedor de su elección en ese momento exacto.
Ahora puede hacer una copia de seguridad de ese archivo o transferirlo a otro host, y para restaurarlo simplemente ejecute
podman import image_name_you_choose.tar.gz
Y crea un nuevo contenedor basado en esa imagen:
distrobox-create --image image_name_you_choose:latest --name distrobox_name distrobox-enter --name distrobox_name
Y está listo para comenzar, ahora puede reproducir su entorno personal en todas partes en pasos simples (y programables).
Administrar sus cajas de distribución
Para administrar sus contenedores en ejecución, simplemente puede usar el administrador de contenedores de su elección:
[email protected]:~$ podman ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3bd26417ec22 /ubuntu:21.10 /usr/bin/entrypoi... 2 days ago Up 2 days ago ubuntu-21 36101d9e2d17 archlinux:latest /usr/bin/entrypoi... 3 hours ago Up 3 hours ago arch-distrobox
Puede eliminar un cuadro de distribución existente usando
podman stop your_distrobox_name podman rm your_distrobox_name
Puedes leer más sobre Podman en este artículo de revista.
Conclusión
En conclusión, distrobox puede ser una herramienta útil tanto en Fedora Workstation y en Silverblue/Kinoite, lo que permite la compatibilidad con versiones anteriores y posteriores del software y la libertad de usar cualquier distribución con la que se sienta más cómodo.
El proyecto se encuentra todavía en desarrollo activo, por lo que cualquier tipo de aportación y reportando errores Es bienvenido.