Comment installer et utiliser Distrobox sur Linux
À quelle fréquence rencontrez-vous une application sympa qui n'est pas disponible pour votre distribution? Vous chercheriez probablement ensuite à l'installer via Brew, Flatpak ou Snap, mais vous êtes souvent court.
Le paysage d'emballage fragmenté sur Linux est un problème. Certaines distributions partagent un format de package commun – mais souvent incompatible; D'autres utilisent un système d'emballage entièrement différent. Flatpak et Snap ont tenté de résoudre ce problème, mais tout ce qu'ils ont fait était de créer plus de normes – XKCD pertinente. Au lieu de créer plus de normes, ce que nous devrions faire est de combiner les normes qui existent déjà – la distribution.
Sommaire
Le logiciel Distrobox est construit sur
Avant d'expliquer Distrobox lui-même, vous devez comprendre certains des logiciels sur lesquels il s'appuie: Docker et Podman. Docker est un logiciel qui isole les processus en conteneurs séparés; Ces processus ne peuvent généralement pas interagir avec le système à l'extérieur du conteneur. Les conteneurs sont construits au-dessus des primitives Linux comme les espaces de noms et les groupes de contrôle. Mais ne vous inquiétez pas des détails; N'oubliez pas qu'un conteneur isole les processus.
Nous appelons Docker un contenu d'exécution. Podman est un autre conteneur d'exécution qui ressemble et ressemble exactement à Docker, à l'exception d'une distinction clé: Podman ne (par défaut) pas les conteneurs d'exécution comme racine; Ceci est important, comme vous le découvrirez bientôt. Docker et Podman sont presque identiques, il est donc possible de suivre le guide du débutant à Docker et d'appliquer presque tout à Podman également.
Comment fonctionne Distrobox?
Distrobox brouille les lignes entre les distributions et exploite les outils existants pour installer des packages transversaux. Distrobox enveloppe l'exécution de votre conteneur choisi (c'est-à-dire Podman, Docker ou LilyPod) pour exécuter des processus dans un conteneur. Lorsque vous exécutez une commande Distrobox, il délégue à l'exécution du conteneur sous-jacent.
Mais pourquoi? Contrairement à Docker, Podman, etc., Distrobox intègre étroitement les processus conteneurisés à votre système; Ils peuvent lire votre annuaire domestique, voir d'autres processus et même communiquer avec eux. Distrobox s'occupe de la configuration du conteneur difficile pour vous, de sorte qu'il exécutera des applications – dans un conteneur docker ou podman – avec hôte avec l'hôte.
L'objectif d'un contenant l'exécution est l'isolement des processus; L'objectif de Distrobox est une intégration étroite avec peu de configuration.
La documentation officielle Distrobox clarifie « l'intégration serrée » avec les détails techniques:
… Insère de manière transparente au reste du système d'exploitation en donnant accès au répertoire personnel de l'utilisateur, aux sockets Wayland et X11, à la mise en réseau, aux appareils amovibles (comme les bâtons USB), Systemd Journal, SSH Agent, D-Bus, Ulimits, / Dev et la base de données UDEV, etc…
Pourquoi je recommande Podman sur Docker
Vous devez utiliser Podman comme exécution de conteneur car, par défaut, il exécute des conteneurs en tant qu'utilisateur non privilégié, tandis que Docker les exécute sous forme de racine. Pourquoi est-ce un problème? Les processus conteneurisés héritent des privilèges de leur conteneur – c'est un peu plus compliqué que cela, mais c'est l'idée générale. Distrobox intègre étroitement les conteneurs avec l'hôte; Tout processus fonctionnant à l'intérieur d'un enracineux Le conteneur peut avoir un accès complet à votre système.
Distrobox vous invitera à définir un mot de passe pour un conteneur si vous l'exécutez en tant que racine, ce qui fournit quelques Protection, mais c'est loin d'être une solution parfaite.
Comment installer Podman
Podman est disponible pour au moins une douzaine de distributions. Les commandes suivantes couvrent les plus courantes.
Pour Debian et ses dérivés (par exemple, Ubuntu, menthe, etc.):
sudo apt-get install podman
Pour les dérivés du chapeau rouge (par exemple, Fedora, etc.):
sudo dnf install podman
Pour Arch Linux et ses dérivés:
sudo pacman -S podman
Vous constaterez probablement que Podman est disponible dans les référentiels par défaut de votre distribution. La chose la plus importante est que vous le configuriez pour mode sans racine. Malheureusement, pour certaines distributions, cela peut nécessiter une configuration manuelle. Reportez-vous au manuel de votre distribution car le processus est différent pour chacun.
Comment installer Distrobox
Distrobox est disponible pour plus de 30 distributions, donc une fois que vous avez installé Podman (ou Docker), allez-y et installez Distrobox à l'aide du gestionnaire de packages de votre distribution. Vous trouverez ci-dessous les commandes d'installation pour les distributions les plus courantes.
Pour Debian et ses dérivés (par exemple, Ubuntu, menthe, etc.):
sudo apt-get install distrobox
Pour les dérivés du chapeau rouge (par exemple, Fedora, etc.):
sudo dnf install distrobox
Pour Arch Linux et ses dérivés:
sudo pacman -S distrobox
Si Distrobox n'est pas dans le référentiel de votre distribution, vous pouvez utiliser la commande Curl suivante:
curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install | sudo sh
Des actions comme Curl… | shot peut contenir et injecter des commandes malveillantes; Confirmez toujours le fournisseur et passez en revue le script.
En rapport
5 choses que je fais sur Linux pour le rendre plus sécurisé
Parce que Linux peut être plus sûr, mais pas invulnérable.
Vous devez maintenant définir Podman en tant que runtime de conteneur dans le fichier de configuration Distrobox. Exécutez la commande suivante, mais méfiez-vous qu'elle écrasera tout fichier de configuration existant:
echo 'container_manager="podman"' > ~/.distroboxrc
Maintenant, vous êtes prêt.
Créer votre premier conteneur Distrobox
Les conteneurs stockent vos modifications et ils sont une fine couche au-dessus des images immuables. Les images fournissent le système de base de la distribution. Lorsqu'ils sont combinés, ils fournissent un système complet. Vos forfaits installés vivront dans un conteneur. Distrobox intègre le répertoire domestique du conteneur dans le vôtre, de sorte que les fichiers de configuration de votre package y vivront.
Lorsque vous exécutez la commande suivante, il crée un conteneur à partir de l'image par défaut:
distrobox create -n my-container
Cependant, pour la durée, nous utiliserons Arch Linux:
distrobox create --name my-arch --image archlinux:latest
En rapport
Qu'est-ce que Arch Linux et en quoi est-il différent des autres versions de Linux?
Si vous songez à utiliser Arch, BTW.
Vous pouvez créer un conteneur à l'aide de n'importe quelle image que vous souhaitez – par exemple, Debian:
distrobox create --name my-debian --image debian:latest
Ou vous pouvez créer un conteneur Fedora:
distrobox create --name my-fedora --image fedora:latest
N'interrompez pas le processus de création de conteneurs; Sinon, vous pouvez le corrompre et vous devrez le recréer.
Distrobox prend en charge plus de 30 distributions pour les conteneurs, chacun prenant en charge plusieurs versions et versions. De plus, si vous connaissez Toolbox, vous pouvez également utiliser leurs images. Distrobox maintient une grande liste de noms d'images pour votre commodité.
Comment installer une application dans un conteneur Distrobox
Les conteneurs sont un environnement que vous activer. Toutes les commandes suivantes s'exécutent à l'intérieur du conteneur.
distrobox enter my-arch
Vous pouvez jouer avec ce système pour y avoir une idée. Lorsque vous avez terminé, tapez sortie.
Cependant, au lieu d'entrer dans un conteneur pour installer un package, il est souvent préférable d'exécuter une commande à un coup. Ici, nous installerons Firefox, que nous exécuterons un peu plus tard:
distrobox enter my-arch -- sudo pacman -S firefox
Si vous avez créé un conteneur pour une autre distribution, vous pouvez probablement utiliser l'une des commandes suivantes.
Pour Debian et ses dérivés (par exemple, Ubuntu, menthe, etc.):
distrobox enter my-container-name -- sudo apt-get install firefox
Pour les dérivés du chapeau rouge (par exemple, Fedora, etc.):
distrobox enter my-container-name -- sudo dnf install firefox
Si vous avez du mal avec les commandes d'installation, vous devez probablement d'abord apprendre à installer et supprimer les logiciels via le terminal.
Lors de l'utilisation de Podman, Sudo fonctionne simplement. Podman sans racine exécute les conteneurs en tant qu'utilisateur sans privilège par défaut. Tous les processus à l'intérieur du conteneur (y compris Sudo) ne peuvent pas obtenir de privilèges plus élevés que le conteneur lui-même. Cela protège votre système hôte.
En rapport
10 conteneurs Docker chaque maison à domicile devrait fonctionner
Combien de ces conteneurs dirigez-vous déjà?
Comment exécuter une application dans un conteneur Distrobox
Pour exécuter votre Firefox nouvellement installé, exécutez:
distrobox enter my-arch -- firefox
La commande précédente ne renvoie pas le contrôle au terminal jusqu'à ce que Firefox sache; C'est aussi long. Au lieu de cela, vous devriez probablement utiliser un alias. Dans votre fichier de configuration de shell, tapez:
alias firefox="distrobox enter my-arch -- nohup firefox >/dev/null"
Vous pouvez nommer cet alias tout ce que vous voulez.
L'une des fonctionnalités les plus utiles de Distrobox est que les packages graphiques fonctionnent sans configuration supplémentaire. Il fonctionne avec X11 ou Wayland. Distrobox prend également en charge l'accélération du GPU; Si c'est quelque chose qui vous intéresse, vous devez vous référer au manuel Distrobox.
Comment penser aux conteneurs Distrobox
Comme mentionné précédemment, les conteneurs sont un calque au-dessus d'une image. Distrobox partage des images entre plusieurs conteneurs. Par exemple, lorsque vous créez un conteneur basé sur Debian:
distrobox create --name deb-1 --image debian:latest
Il réduira une image Debian, l'utilisera comme système de base, puis créera un conteneur dessus. Lorsque vous créez deux autres conteneurs:
distrobox create --name deb-2 --image debian:latest
distrobox create --name deb-3 --image debian:latest
Les deux utiliseront la même image Debian immuable, mais chaque conteneur est séparé les uns des autres. Installation d'un package dans deb-1 signifie qu'il n'existera pas dans DEB-2 ou DEB-3. Cependant, ils partageront le même fichier de configuration, qui vit dans le répertoire personnel de votre hôte.
Vous vous demandez peut-être si vous devez créer un conteneur ou plusieurs. Généralement, créez un conteneur pour chaque distribution que vous utilisez. Par exemple, il y a un package dans l'AUR (un référentiel logiciel maintenu dans la communauté pour Arch Linux) que vous voulez, vous créez donc un conteneur Arch; Il y en a trois dans les référentiels Debian, vous créez donc un seul conteneur Debian et y mettez les trois. Cependant, il peut y avoir des scénarios où il y a des conflits logiciels – EG, différentes versions du même package; Il s'agit d'un scénario idéal pour créer des conteneurs séparés.
Autres commandes de distrobox utiles pour savoir
La ressource la plus utile pour les commandes est toujours le menu – help:
distrobox --help
Vous pouvez obtenir de l'aide sur des commandes spécifiques en ajoutant un indicateur – help. Par exemple, pour obtenir de l'aide pour le créer commande:
distrobox create --help
Création de conteneurs temporaires
Pour tester quelque chose rapidement, vous pouvez utiliser des conteneurs temporaires. Distrobox les détruit automatiquement après la fin:
distrobox ephemeral
Sachez que ceux-ci sont plus lents à démarrer car ils doivent initialiser – c'est similaire à la création d'un nouveau conteneur.
Voir distrobox éphémère – help pour plus d'options.
Gérer les conteneurs
Vous devez traiter les conteneurs Distrobox comme un sous-système; Cela implique la création, le démarrage, l'arrêt, la suppression, la mise à jour et la maintenance des conteneurs. Vous trouverez ci-dessous une liste de commandes communes qui vous aident à le faire.
À un moment donné, vous voudrez savoir quels conteneurs existent sur votre système:
distrobox ls
Vous souhaitez peut-être supprimer un conteneur. Avant de le faire, vous voudrez peut-être d'abord l'arrêter, puis le supprimer:
distrobox stop my-container
distrobox rm my-container
Il n'est pas strictement nécessaire d'arrêter un conteneur avant de le supprimer, car Distrobox vous incitera à forcer Supprimez-le s'il est en cours d'exécution.
Vous voulez presque certainement garder vos conteneurs à jour. Pour les mettre à jour tousutiliser:
distrobox upgrade --all
Ou pour mettre à jour un conteneur spécifique:
distrobox upgrade my-container
La commande de mise à niveau utilisera le gestionnaire de packages du conteneur pour mettre à jour tous ses packages. De plus, chaque conteneur nécessite des mises à jour régulières. Lorsque vous supprimez un conteneur, il supprime également ses mises à jour.
Pour désinstaller les packages, utilisez simplement le gestionnaire de packages spécifique à la distribution pour ce conteneur particulier. Par exemple, si vous souhaitez désinstaller Firefox du conteneur Arch Linux que nous avons créé plus tôt, utilisez ce qui suit:
distrobox enter my-arch -- sudo pacman -R firefox
Pour les dérivés du chapeau rouge (par exemple, Fedora), utilisation:
distrobox enter my-conainer-name -- sudo dnf rm firefox
Pour Debian et ses dérivés, utilisez:
distrobox enter my-container-name -- sudo apt-get remove firefox
Comment désinstaller Distrobox
Si vous n'aimez pas Distrobox et que vous souhaitez le supprimer, ci-dessous les commandes pour le faire.
Si vous avez utilisé Curl pour l'installer, alors vous doit Utilisez cette commande curl pour le désinstaller:
curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/uninstall | sudo sh
Sinon, pour Debian et ses dérivés (par exemple, Ubuntu, menthe, etc.):
sudo apt-get remove distrobox
Pour les dérivés du chapeau rouge (par exemple, Fedora, etc.):
sudo dnf rm distrobox
Pour Arch Linux et ses dérivés:
sudo pacman -R distrobox
L'une des forces de Distrobox est l'intégration serrée avec l'hôte. Dans le monde Docker, cela, dans une certaine mesure, est une faiblesse, car Docker veut isoler les processus; Distrobox veut les intégrer – c'est la principale différence entre eux. Il est également essentiel de comprendre les différences entre l'exécution d'un conteneur comme racine et l'exécution d'un processus conteneurisé en tant que racine. Je recommande explicitement Podman car il fonctionne mieux que Docker en tant que runtime de conteneur sans racine. Les mainteneurs de Distrobox sont également d'accord.
Faites attention à ces deux points clés, car ils sont importants pour protéger votre système. Essentiellement, soyez prudent lorsque vous exécutez un conteneur comme racine; n'exécutez pas ensuite des applications à l'intérieur de ce conteneur comme un compte limité – cela fournit un faux sentiment de sécurité et peut entraîner une escalade de privilèges.