En esta guía, discutiremos qué es Toolbox y cómo crear y administrar un entorno de desarrollo en contenedores usando Toolbox en Fedora Linux.
Introducción
En los últimos años, la virtualización de contenedores de Linux ha ganado mucho impulso. De hecho, la nueva generación de virtualización es la contenerización.
Hoy en día, los desarrolladores de aplicaciones utilizan principalmente contenedores como su entorno de desarrollo preferido. Existen muchas herramientas para crear y administrar contenedores de Linux. Podman , Docker , vagabundo son algunas aplicaciones populares de gestión de contenedores.
Hoy hablaremos de otra utilidad llamada Toolbox lo que facilita el uso de un entorno en contenedores para el desarrollo de software cotidiano.
¿Qué es la caja de herramientas?
Toolbox es una herramienta interna de Fedora para crear un entorno de línea de comandos en contenedores sobre su sistema base Fedora.
Es particularmente útil para configurar un entorno de desarrollo de software de usar y tirar donde se pueden instalar y usar herramientas y bibliotecas de desarrollo.
Toolbox está desarrollado específicamente para OSTree sistemas basados como Fedora Core OS y Fedora Silverblue . Como ya sabrá, los sistemas basados en OSTree son inmutables.
Toolbox se basa en imágenes de contenedores OCI y Podman. No requiere ningún root
Privilegios para implementar contenedores. ¡Lo bueno es que la instalación y el uso de Toolbox son muy fáciles de usar y fáciles de recordar!
¿Por qué caja de herramientas?
El objetivo real del sistema operativo inmutable es desalentar la instalación de software en el sistema host y animar a los usuarios a instalar el software en contenedores.
A diferencia de los sistemas basados en OSTree, los contenedores son completamente mutables. Para que pueda instalar sus herramientas, editores y SDK favoritos de desarrollo y depuración dentro de los contenedores. No se instala nada en el sistema host.
Para poner esto en términos sencillos, podemos implementar un contenedor mutable en un sistema operativo host inmutable con la ayuda de Toolbox.
¿Cómo funciona la caja de herramientas?
De forma predeterminada, Toolbox crea los contenedores en función de su sistema actual. Por ejemplo, si su sistema base es Fedora 35, Toolbox creará un contenedor basado en Fedora 35. En este contenedor, puede usar administradores de paquetes como yum
o dnf
para instalar sus aplicaciones preferidas. También puede crear contenedores basados en otras versiones de Fedora.
Puede iniciar más de un contenedor a la vez y comenzar a trabajar en diferentes proyectos simultáneamente. Una vez que haya terminado con el contenedor, simplemente elimínelo y cree uno nuevo cuando lo desee. Nuevamente, el sistema host no se ve afectado de ninguna manera. De esta manera podemos mantener un sistema operativo anfitrión limpio. Esto también evitará drásticamente el desorden y reducirá el proceso de reinstalación del sistema operativo host.
Instalar Toolbox en Fedora
Toolbox viene preinstalado con Fedora Silverblue 30 y ediciones más recientes. En la estación de trabajo Fedora, puede instalarlo usando dnf
o yum
administradores de paquetes:
$ sudo dnf install toolbox
O,
$ sudo yum install toolbox
Primeros pasos con Toolbox en Fedora Silverblue
Toolbox proporciona una pequeña cantidad de comandos para crear, listar, ingresar y eliminar contenedores.
1. Mostrar la ayuda de la caja de herramientas
Si es nuevo en Toolbox, es mejor mostrar la sección de ayuda de Toolbox para obtener una idea de lo que hace cada comando. Para ver la ayuda de Toolbox, use cualquiera de los siguientes comandos:
$ toolbox --help
$ toolbox help
$ toolbox -h
Ahora comencemos con la creación de nuevos contenedores.
2. Crear un nuevo contenedor
Para crear un nuevo contenedor basado en su versión actual del sistema operativo Fedora, simplemente ejecute:
$ toolbox create
Este comando buscará la imagen base que se usará para construir el contenedor desde su sistema local. Si no se encuentra ninguna imagen local, se le pedirá que descargue la imagen correspondiente. Escriba y y la tecla ENTER para descargar la imagen.
Salida de muestra:
Image required to create toolbox container.
Download registry.fedoraproject.org/fedora-toolbox:33 (500MB)? [y/N]: y
Created container: fedora-toolbox-33
Enter with: toolbox enter
Toolbox descargará una imagen que coincida con la versión del sistema operativo de su sistema host actual desde el registro de Fedora y creará un nuevo contenedor basado en la imagen descargada. Las imágenes suelen ser una versión simplificada de las distribuciones reales.
2.1. Crear contenedores con nombre personalizado
La caja de herramientas asignará automáticamente un nombre único (por ejemplo, fedora-toolbox-33
) al contenedor recién creado.
Si desea crear un contenedor con un nombre personalizado de su elección, use el --container
, -c
bandera seguida del nombre del contenedor como se muestra a continuación:
$ toolbox create --container mytoolbox-f33
O brevemente:
$ toolbox create -c mytoolbox-f33
Aquí, mytoolbox-f33
es el nombre del contenedor.
3. Cree un nuevo contenedor basado en una versión específica del sistema operativo
Como ya mencioné, Toolbox crea contenedores basados en la versión actual del sistema operativo. Por ejemplo, si está ejecutando Fedora 34, Toolbox creará un contenedor basado en la imagen de Fedora 34.
Sin embargo, también puede crear contenedores basados en otras versiones. Creé un contenedor Fedora 32 en mi edición Silverblue de Fedora 33 usando el siguiente comando:
$ toolbox create --release f32
O en breve,
$ toolbox create -r f32
4. Listar contenedores
Para enumerar todos los contenedores disponibles localmente en su sistema, ejecute:
$ toolbox list
Salida de muestra:
IMAGE ID IMAGE NAME CREATED
9659c2039e64 registry.fedoraproject.org/f32/fedora-toolbox:32 4 months ago
675192cc4238 registry.fedoraproject.org/fedora-toolbox:33 4 weeks ago
CONTAINER ID CONTAINER NAME CREATED STATUS IMAGE NAME
2cfb48d6a6c5 fedora-toolbox-32 4 months ago exited registry.fedoraproject.org/f32/fedora-toolbox:32
1f709997b871 fedora-toolbox-33 27 minutes ago configured registry.fedoraproject.org/fedora-toolbox:33
Como puede ver en el resultado anterior, tengo dos contenedores, a saber, fedora-toolbox-32
y fedora-toolbox-33
en mi sistema.
La sección superior de la salida muestra los detalles de las imágenes base utilizadas para crear los contenedores, como la identificación de la imagen, el nombre de la imagen y cuándo se crearon esas imágenes. En la parte inferior, verá los detalles de los contenedores, como la identificación del contenedor, el nombre del contenedor, cuándo se creó el contenedor y el estado del contenedor.
También puede mostrar los detalles del contenedor o los detalles de la imagen por separado. Para enumerar solo los detalles del contenedor, use --containers
, -c
opción:
$ toolbox list --containers CONTAINER ID CONTAINER NAME CREATED STATUS IMAGE NAME 2cfb48d6a6c5 fedora-toolbox-32 4 months ago running registry.fedoraproject.org/f32/fedora-toolbox:32 1f709997b871 fedora-toolbox-33 21 hours ago running registry.fedoraproject.org/fedora-toolbox:33
Para enumerar solo las imágenes, use --images
, -i
bandera:
$ toolbox list --images IMAGE ID IMAGE NAME CREATED 9659c2039e64 registry.fedoraproject.org/f32/fedora-toolbox:32 4 months ago 675192cc4238 registry.fedoraproject.org/fedora-toolbox:33 4 weeks ago
Tenga en cuenta que el nombre de los contenedores y los nombres de las imágenes se verán casi iguales, excepto la última parte de su nombre.
El nombre del contenedor suele tener guion (-) antes de la última parte de su nombre (por ejemplo, fedora-toolbox-33
) y el nombre de la imagen tiene dos puntos (:) (por ejemplo, fedora-toolbox:33
).
5. Entrar en los contenedores
Ya hemos creado los contenedores pero no hemos entrado en ellos. Así que entremos en un contenedor usando el comando:
$ toolbox enter
Una vez que ingresó al contenedor, el indicador de shell se antepone con un rombo símbolo como se muestra en el siguiente resultado:
⬢[[email protected] ~]$
¿Notó el símbolo de diamante en el extremo izquierdo de la indicación? Significa que estás dentro del contenedor.
Los contenedores se integran a la perfección con su sistema operativo actual. Dentro de cada contenedor, encontrará su nombre de usuario y permisos existentes.
Puede acceder a su directorio de inicio y a varias otras ubicaciones de la misma forma que lo hace desde su sistema host. También puede acceder tanto al sistema como a la sesión D-Bus, el diario del sistema y Kerberos, etc.
Cada contenedor contiene herramientas de líneas de comando comunes, incluido un administrador de paquetes (por ejemplo, DNF
en Fedora). Por lo tanto, puede instalar y probar cualquier software dentro del contenedor.
Por ejemplo, el siguiente comando instala todas las herramientas de desarrollo necesarias:
$ sudo yum groupinstall "Development Tools"
5.1. Entrar en un contenedor específico
Cuando ejecute la toolbox enter
comando sin ninguna opción, abre el contenedor de caja de herramientas predeterminado. El contenedor predeterminado es el que se basa en el sistema operativo de su host.
Si desea abrir un contenedor diferente, mencione explícitamente su nombre como se muestra a continuación:
$ toolbox enter -c fedora-toolbox-32
Aquí, -c
se utiliza para hacer referencia al nombre del contenedor y fedora-toolbox-32
es el nombre del contenedor.
6. Salir de la caja de herramientas
Una vez que haya terminado con el contenedor, simplemente escriba exit
para cerrar sesión en el contenedor.
$ exit
7. Ejecute comandos en contenedores sin entrar en ellos
Una característica notable de Toolbox es que puede ejecutar comandos en un contenedor sin ingresarlos. El siguiente comando muestra la versión de distribución del contenedor predeterminado del sistema host:
$ toolbox run cat /etc/redhat-release
Fedora release 33 (Thirty Three)
Cuando ejecuta la toolbox run
comando sin ninguna opción, ejecutará los comandos en el contenedor predeterminado. También puede ejecutar comandos en otros contenedores especificando su nombre con --container
, -c
bandera:
$ toolbox run -c fedora-toolbox-32 cat /etc/redhat-release
Fedora release 32 (Thirty Two)
8. Deja de ejecutar contenedores
Después de salir del contenedor, seguirá funcionando hasta que lo detenga. No hay un comando de caja de herramientas directo para detener un contenedor en ejecución. Sin embargo, podemos usar podman
comando para detener los contenedores de la caja de herramientas:
$ podman container stop fedora-toolbox-33
Recuerde que Toolbox usa podman debajo del capó.
9. Eliminar contenedores e imágenes de la caja de herramientas
Si no desea un contenedor o su imagen base, simplemente puede deshacerse de ellos como se muestra a continuación.
Antes de eliminar un contenedor, asegúrese de haber salido de ese contenedor.
Para eliminar un contenedor, ejecute:
$ toolbox rm fedora-toolbox-32
El comando anterior elimina el contenedor llamado fedora-toolbox-32
.
Para eliminar a la fuerza un contenedor incluso si se está ejecutando, use --force
, -f
bandera:
$ toolbox rm -f fedora-toolbox-32
Para eliminar todos los contenedores, use --all
, -a
bandera:
$ toolbox rm --all
Verifique si el contenedor se eliminó enumerando los contenedores disponibles:
$ toolbox list
Del mismo modo, puede eliminar las imágenes de la caja de herramientas usando toolbox rmi
comando como a continuación:
$ toolbox rmi fedora-toolbox:32
Tenga en cuenta la i
en el comando anterior. El rm
el comando elimina los contenedores mientras que rmi
El comando elimina las imágenes. Además, no olvide mencionar el nombre correcto de la imagen que desea eliminar.
Para eliminar todas las imágenes, use --all
, -a
bandera:
$ toolbox rmi --all
Use podman para administrar contenedores e imágenes de la caja de herramientas
Dado que Toolbox es solo el envoltorio de podman, puede usar directamente los comandos de podman para administrar contenedores.
Para listar los contenedores de la caja de herramientas usando el comando podman, ejecute:
$ podman ps -a
Para enumerar las imágenes de la caja de herramientas con podman, ejecute:
$ podman images
Para iniciar un contenedor:
$ podman start fedora-toolbox-33
Para ver las estadísticas de uso de recursos en vivo de todos los contenedores en ejecución:
$ podman stats
Para detener un contenedor:
$ podman stop fedora-toolbox-33
Inspeccionar contenedores:
$ podman inspect fedora-toolbox-33
Eliminar contenedor:
$ podman rm <container-name>
Eliminar imagen:
$ podman rmi <image-name>
Hay muchos comandos podman disponibles. Puede ver todos los comandos y opciones generales disponibles en la sección de ayuda de podman:
$ podman --help
Conclusión
Los contenedores no son solo para fines experimentales y de aprendizaje, también son ideales para entornos de desarrollo aislados en los que puede trabajar en diferentes proyectos en diferentes versiones del sistema operativo. ¡Toolbox hace que la gestión de contenedores sea mucho más fácil y mejor!