Conteneurs

toolbox : Un outil pour la gestion des conteneurs

Cet article a été mis à jour, vous consultez ici une archive de cet article!
Table des matières

toolbox-logo



Introduction



Toolbox est un outil conçu pour faciliter la gestion des environnements de développement basés sur des conteneurs. Toolbox s'intègre parfaitement avec les systèmes de la branche Red Hat qui utilisent podman.

Toolbox permet aux utilisateurs de créer des environnements de développement isolés, appelés "toolboxes", qui peuvent contenir toutes les dépendances nécessaires pour un projet spécifique. Voici quelques-unes de ses principales fonctionnalités :
- Isolation des Environnements : Chaque toolbox fonctionne comme un conteneur isolé, ce qui signifie que les modifications apportées à un environnement n'affectent pas le système hôte ou d'autres toolboxes.
- Reproductibilité : Les environnements peuvent être facilement reproduits, ce qui est essentiel pour le développement collaboratif et le déploiement d'applications.
- Facilité d'Utilisation : Toolbox simplifie la création et la gestion des conteneurs, rendant l'expérience utilisateur plus fluide.
- Intégration avec Podman : Toolbox utilise Podman en arrière-plan, ce qui permet de bénéficier de la gestion des conteneurs sans nécessiter de droits d'administrateur.

Les conteneurs toolbox s'intègrent au système hôte et ont accès aux ressources du système telles que le serveur d'affichage, les périphériques amovibles, etc.

podman vs toolbox



Dans quels cas utiliser podman, et dans quel cas utiliser toolbox ?

- Podman est plus adapté pour la gestion de conteneurs et le déploiement d'applications, offrant une flexibilité et un contrôle plus importants sur les conteneurs eux-mêmes.
- Toolbox est idéal pour les développeurs ou les sysadmins qui ont besoin d'un environnement isolé pour le développement et les tests, sans interférer avec le système hôte.

Voici un petit tableau comparatif pour montrer qu'on utilisera les 2 outils dans des cas d'usages différents :
Critère toolbox podman
Type d'outil Gestion d'environnements de développement isolés Gestion de conteneurs
Gestion des images Utilise des images spécifiques Toolbox Gestion complète des images OCI
Isolation Environnement isolé avec accès au système hôte Isolation complète des conteneurs
Utilisation Développement et tests Déploiement d'applications, microservices, etc.
Privilèges Fonctionne sans privilèges root Fonctionne sans privilèges root
Démarrage de services Ne peut pas démarrer des services système (avec systemd) Peut démarrer des services (avec systemd))
Environnement utilisateur Reprise de l'environnement de l'hôte (bash, /home, montages, etc.) Environnement utilisateur isolé présent dans le conteneur
Applications graphiques Peut lancer des applications graphiques Ne prend pas en charge le lancement d'applications graphiques directement



Installation



Avant de pouvoir utiliser Toolbox, on devra l'installer :

Fedora, Red Hat et dérivées :
Code BASH :
sudo dnf install toolbox


Debian, Ubuntu et dérivées :
Code BASH :
sudo apt install podman-toolbox



Utilisation de toolbox



Il n'est pas nécessaire d'avoir les droits d'administrateur pour utiliser toolbox.

Création d'une toolbox



Pour créer une toolbox, on utilisera :
Code BASH :
toolbox create


Par défaut, la toolbox est créée avec le même environnement que le système sur lequel il s'exécute.
Etant sur Fedora 41 lors de la rédaction de cet article, il me récupère une Fedora 41 :
Code :
Image required to create Toolbx container.
Download registry.fedoraproject.org/fedora-toolbox:41 (375.2MB)? [y/N]:


Le nom par défaut de la toolbox est distribution-toolbox-version. On pourra spécifier un nom particulier à notre toolbox en spécifiant le nom après le create :
Code BASH :
toolbox create fedo41


Pour créer une Fedora 35 par exemple :
Code BASH :
toolbox create -d fedora -r 35 fc35


Si on veut créer une toolbox RHEL 9.3 appelée rhel9 :
Code BASH :
toolbox create -d rhel -r 9.3 rhel9


Et une Ubuntu 24.04 :
Code BASH :
toolbox create -d ubuntu -r 24.04 ubuntu2404


Les images sont stockées dans ~/.local/share/containers/storage.

Les distributions supportées sont indiquées dans la page de manuel de toolbox :
Code BASH :
man toolbox


Au moment de la rédaction de cet article, les distributions supportées sur Fedora sont : arch, fedora, rhel, ubuntu.

Créer des toolbox à partir d'images externes



Si on souhaite récupérer une image d'un autre système, on pourra le faire avec l'option --image suivi de l'URL du dépôt.
Voici un exemple pour la création d'une toolbox Alma Linux 9 :
Code BASH :
toolbox create --image quay.io/toolbx-images/almalinux-toolbox:9 alma9


On retrouvera ici une liste de toolbox :
- Distributions : https://quay.io/organization/toolbx-images
- Fedora : https://quay.io/repository/fedora/fedora-toolbox?

Lister les toolbox



Il est possible de lister les toolbox avec :
Code BASH :
toolbox list


Ce qui renvoie :
Code :
IMAGE ID      IMAGE NAME                                    CREATED
8be0f10e55e7  quay.io/toolbx/ubuntu-toolbox:24.04           5 days ago
f44ae26aeaeb  registry.access.redhat.com/ubi9/toolbox:9.3   8 months ago
862705390e8b  registry.fedoraproject.org/fedora-toolbox:35  2 years ago
d2a9c71e8282  registry.fedoraproject.org/fedora-toolbox:41  8 hours ago
CONTAINER ID  CONTAINER NAME     CREATED             STATUS   IMAGE NAME
c26ac38fb8d7  fc35               7 minutes ago       created  registry.fedoraproject.org/fedora-toolbox:35
f50812d2d52c  fedora-toolbox-41  20 minutes ago      created  registry.fedoraproject.org/fedora-toolbox:41
b03d09788ca1  rhel9              About a minute ago  created  registry.access.redhat.com/ubi9/toolbox:9.3
a010af9a0803  ubuntu2404         14 minutes ago      created  quay.io/toolbx/ubuntu-toolbox:24.04


On y retrouve la liste des images et des conteneurs.
Toolbox s'appuyant sur podman, on reconnaitra la sortie des commandes sous commandes podman images et podman ps


Entrer dans une toolbox



Pour entrer dans une toolbox, on utilisera :
Code BASH :
toolbox enter


Par défaut, on rentrera dans la toolbox corerspondant au même système que l'hôte s'il existe (Fedora 41 sur une Fedora 41)

Pour rentrer dans une toolbox particulière, on indiquera le nom de la toolbox. Par exemple :
Code BASH :
toolbox enter rhel9


A ce moment là, on est dans le système de la toolbox et le prompt indique un hexagone violet (si on n'a pas personnalisé notre prompt) :
Code BASH :
adrien@fedora:~$ toolbox enter rhel9 
⬢ [adrien@toolbx ~]$ cat /etc/redhat-release 
Red Hat Enterprise Linux release 9.3 (Plow)[adrien@toolbx ~]$ 


On sait qu'on est dans une toolbox avec le nom du système qui est toolbx.

Je vais pouvoir installer ce que je souhaite dedans, comme si j'étais sur mon système réel.
Attention cependant, on ne pourra pas exécuter des services avec systemd (par exemple lancer un serveur web) car les toolbox ne sont pas lancées en tant que root.

Pour quitter la toolbox :
Code BASH :
exit



Lancer à la volée des applications



Il est possible de lancer des applications installées dans une toolbox avec :
Code BASH :
toolbox run --container leconteneur unecommande


Exemple, après installation de cpu-x sur le conteneur ubuntu2404 :
Code BASH :
toolbox run --container ubuntu2404 cpu-x


Et l'application se lance comme si j'étais sur ma Fedora Linux :

toolbox-appli-ubuntu




Stopper les toolbox



Si on entre dans une toolbox et qu'on en sort (ou qu'on lance une commande), les conteneurs restent lancés (pour exécuter plus rapidement des commandes ou rentrer plus vite dans la toolbox) :
Code :
CONTAINER ID  CONTAINER NAME     CREATED         STATUS   IMAGE NAME
c26ac38fb8d7  fc35               42 minutes ago  created  registry.fedoraproject.org/fedora-toolbox:35
23fe89c3e62e  fedora-toolbox-41  31 minutes ago  created  registry.fedoraproject.org/fedora-toolbox:41
b03d09788ca1  rhel9              36 minutes ago  running  registry.access.redhat.com/ubi9/toolbox:9.3
a010af9a0803  ubuntu2404         50 minutes ago  running  quay.io/toolbx/ubuntu-toolbox:24.04


On voit ici que rhel9 et ubuntu2404 sont dans le statut "running".

On pourra arrêter les conteneurs avec podman comme on le fait habituellement :
Code BASH :
podman stop leconteneur


Si je stoppe ubuntu2404, le conteneur est en statut exited :
Code :
CONTAINER ID  CONTAINER NAME     CREATED         STATUS   IMAGE NAME
c26ac38fb8d7  fc35               45 minutes ago  created  registry.fedoraproject.org/fedora-toolbox:35
23fe89c3e62e  fedora-toolbox-41  33 minutes ago  created  registry.fedoraproject.org/fedora-toolbox:41
b03d09788ca1  rhel9              38 minutes ago  running  registry.access.redhat.com/ubi9/toolbox:9.3
a010af9a0803  ubuntu2404         52 minutes ago  exited   quay.io/toolbx/ubuntu-toolbox:24.04


Supprimer des conteneurs



Si on n'a plus besoin d'un conteneur, on pourra le supprimer avec :
Code BASH :
toolbox rm leconteneur


Exemple ici pour supprimer le conteneur ubuntu2404 :
Code BASH :
toolbox rm ubuntu2404


Le conteneur doit être arrêté pour être supprimé !
Le conteneur est alors supprimé mais l'image de référence reste présente quant à elle.

On pourra éventuellement utiliser l'option --force qui stoppera tous le conteneur avant de le supprimer.

Supprimer des images



Si on veut supprimer des images téléchargées, on pourra le faire avec :
Code BASH :
toolbox rmi url-de-image


Exemple ici avec l'image de la Ubuntu 24.04 :
Code BASH :
toolbox rmi quay.io/toolbx/ubuntu-toolbox:24.04 


Il ne doit plus y avoir de conteneur qui fonctionnent avec l'image qui doit être supprimée !

On pourra éventuellement utiliser l'option --force qui stoppera tous les conteneurs associés à l'image, supprimera ceux-ci et supprimera enfin l'image. A utiliser avec précaution !

Intégration avec le terminal



Si vous êtes avec l'environnement de bureau GNOME, toolbox est directement intégré au terminal pytxis.
On pourra lancer les toolbox créées facilement via le menu déroulant en haut à gauche :

ptyxis-toolbox