Explorer « Podman », l’alternative à Docker renforcée côté sécurité
(betterstack.com)- Podman offre une expérience d’exécution de conteneurs proche de Docker, tout en se distinguant sur la sécurité et la traçabilité d’audit grâce à son fonctionnement sans démon
- Docker utilise une architecture client-serveur centrée sur le Docker daemon, tandis que Podman crée les conteneurs directement depuis la session utilisateur, ce qui rend le suivi de l’utilisateur exécutant plus clair
- Comme il respecte les standards OCI, il peut exécuter des images Docker Hub comme
hello-world,caddy,wordpressoumysql:5.7, et dans de nombreux cas il suffit de remplacer la commandedockerparpodman - Contrairement à Docker, les noms d’images courts ne prennent pas automatiquement Docker Hub comme valeur par défaut : il faut donc utiliser soit un nom d’image complet, soit un alias, soit le paramètre
unqualified-search-registries - Les configurations multi-conteneurs peuvent être gérées avec Podman Compose, des pods ou des manifests Kubernetes, mais Podman ne dispose pas d’une orchestration de production intégrée comme Docker Swarm ; il faut donc utiliser un système externe comme Kubernetes
Là où Podman et Docker divergent
- Podman est un moteur de conteneurs open source qui vise à offrir une alternative plus sûre et plus légère que Docker
- Il exécute les conteneurs sans démon résidant en permanence, avec une architecture où l’utilisateur gère directement les conteneurs
- Son orientation de sécurité par défaut privilégie les conteneurs rootless, les espaces de noms utilisateur et un usage plus prudent des capabilities du noyau
- Sa forte compatibilité avec les images Docker et le modèle de commandes Docker en fait une option pratique pour les développeurs et administrateurs système cherchant une alternative à Docker
Architecture et traçabilité d’audit
- Docker utilise un modèle client-serveur : les demandes d’exécution de conteneurs sont transmises du client Docker au Docker daemon
- Les processus de conteneur deviennent des processus enfants du Docker daemon, et non de la session utilisateur
- Lorsque
auditd, le système d’audit Linux, détecte des événements liés aux processus de conteneur, l’ID utilisateur d’audit peut apparaître commeunsetplutôt que comme l’ID utilisateur réel - Avec cette architecture, il est difficile de relier une activité malveillante à un utilisateur précis
- Podman utilise une architecture sans démon
- Chaque conteneur est créé directement via la session de connexion de l’utilisateur
- Les données de processus du conteneur conservent les informations utilisateur
auditdpeut détecter et enregistrer précisément l’ID de l’utilisateur ayant lancé un processus de conteneur donné
- Selon l’image, le démarrage des conteneurs avec Podman peut être jusqu’à 50 % plus rapide qu’avec Docker
Gestion du cycle de vie des conteneurs
- Comme Podman n’a pas de démon, sa manière de gérer le cycle de vie des conteneurs diffère aussi de Docker
- Sous Linux, il s’appuie fortement sur Systemd
- Il utilise un service
systemdappelépodman-restartpour appliquer la politique de redémarrage des conteneurs définie avec le flag--restart always - Ce service redémarre automatiquement les conteneurs spécifiés après un redémarrage du système
- Il utilise un service
- Podman fournit aussi une commande pour générer des fichiers de service Systemd à partir de conteneurs en cours d’exécution
- Placer les conteneurs sous gestion
systemdfacilite leur démarrage, leur arrêt et leur supervision
- Placer les conteneurs sous gestion
- Docker traite ce type de tâche à l’intérieur de son daemon
Options d’orchestration
- En développement local, les utilisateurs de Docker définissent et gèrent généralement les applications multi-conteneurs avec Docker Compose
- Podman ne prend pas en charge nativement les fichiers Compose, mais propose Podman Compose comme alternative compatible
- Il fonctionne généralement avec les fichiers
docker-compose.ymlexistants - Les utilisateurs habitués à Docker Compose peuvent continuer à utiliser leurs fichiers Compose existants
- Il fonctionne généralement avec les fichiers
- L’approche native de Podman permet d’utiliser des pods
- C’est un concept emprunté à Kubernetes
- Il permet de gérer plusieurs conteneurs comme une seule unité
- Pour les déploiements en production, Podman ne dispose pas d’un outil d’orchestration intégré comme Docker Swarm
- Dans ce cas, un système d’orchestration externe comme Kubernetes constitue une alternative
- Kubernetes peut s’intégrer à Podman, mais une configuration et des réglages supplémentaires peuvent être nécessaires pour un fonctionnement correct
Paramètres de sécurité par défaut
- Un risque majeur en sécurité des conteneurs est l’évasion de conteneur, qui peut compromettre le système hôte
- Podman est conçu pour fournir des paramètres de sécurité par défaut plus stricts que Docker
- conteneurs rootless
- espaces de noms utilisateur
- profils seccomp
- Docker permet aussi d’utiliser des conteneurs rootless, des espaces de noms utilisateur et des profils seccomp, mais ils ne sont pas activés par défaut et nécessitent souvent une configuration supplémentaire
- La configuration par défaut de Podman exécute les conteneurs rootless dans un espace de noms utilisateur isolé, ce qui limite l’impact d’une éventuelle évasion
- La configuration par défaut de Docker exécute les processus de conteneur en tant que
root, ce qui accroît le risque en cas d’évasion - Les valeurs par défaut des capabilities diffèrent également
- Podman démarre par défaut les conteneurs avec 11 capabilities
- Docker utilise une configuration par défaut plus permissive avec 14 capabilities
- Les deux outils peuvent être configurés avec une sécurité renforcée, mais Podman demande généralement moins d’efforts pour atteindre cet état
Différences notables dans la comparaison des fonctionnalités
- Podman prend en charge une architecture sans démon et l’intégration avec Systemd
- Il peut regrouper des conteneurs en pods et manipuler du YAML Kubernetes
- Docker prend en charge Docker Swarm, contrairement à Podman
- La plupart des autres fonctionnalités peuvent être considérées comme globalement équivalentes des deux côtés
Installation et environnements d’exécution
- Comme Docker, Podman peut fonctionner sur les principaux systèmes d’exploitation
- macOS
- Windows
- principales distributions Linux
- La différence importante est qu’il s’exécute nativement sous Linux, tandis qu’une machine virtuelle est nécessaire sous Windows et macOS
- Les exemples supposent une distribution Linux basée sur Debian : Ubuntu, Mint ou Debian
- Pour installer une version récente de Podman, il faut une distribution relativement récente
- Au moment de la rédaction, la dernière version majeure de Podman est
4.x - Ubuntu 22.04 LTS reste lié à Podman
3.x - Les exemples se basent sur Ubuntu 23.10
- Au moment de la rédaction, la dernière version majeure de Podman est
- Après installation, la sortie d’exemple indique
podman version 4.3.1et confirme que la commandepodmanpeut être exécutée localement
Exécution d’images Docker et compatibilité OCI
- Podman peut exécuter l’image
hello-worldconstruite avec les outils de l’écosystème Docker - Cette compatibilité vient du fait que Docker et Podman respectent tous deux les standards OCI (Open Container Initiative)
- OCI définit les spécifications du format d’image et du runtime
- Il permet l’interopérabilité entre différents runtimes de conteneurs
- La plupart des images et conteneurs Docker de Docker Hub peuvent être utilisés avec Podman
- Il est possible de migrer des workloads existants vers Podman sans modification, ou de tirer parti de la bibliothèque d’images de Docker Hub
- Même si la sortie de
hello-worldaffiche “Hello from Docker!”, l’exécution réelle est assurée par Podman- Ni le client Docker ni le Docker daemon n’interviennent dans le processus d’exécution
Gestion des noms d’images courts
- Docker utilise
docker.io, c’est-à-dire Docker Hub, comme registre par défaut lorsqu’un nom d’image complet n’est pas précisé - Podman ne recommande pas l’usage de noms courts et ne suppose pas automatiquement un registre par défaut
hello-worlddispose d’un alias dansshortnames.conf, il est donc résolu endocker.io/library/hello-world- Lancer une image sans alias comme
caddyavec un nom court produit l’erreur suivanteError: short-name "caddy" did not resolve to an alias and no unqualified-search registries are defined in "/etc/containers/registries.conf"
- Il existe trois solutions
- Utiliser un nom d’image complet, par exemple
docker.io/library/caddy - Ajouter une section
[aliases]dansregistries.confpour définir l’alias"caddy"="docker.io/caddy" - Définir
unqualified-search-registries=["docker.io"]pour rechercher les noms courts sur Docker Hub
- Utiliser un nom d’image complet, par exemple
- La configuration par utilisateur peut être placée dans
$HOME/.config/containers/registries.conf- Ce fichier est prioritaire sur
/etc/containers/registries.conf - Il peut être configuré sans droits root, ce qui s’accorde mieux avec l’approche rootless
- Ce fichier est prioritaire sur
- Pour utiliser Podman comme substitut à Docker, le paramètre
unqualified-search-registriesest plus pratique à long terme que les alias
Utilisation de registres privés
- Comme Docker, Podman peut utiliser des registres privés
- L’exemple avec un compte Docker Hub suit le flux suivant
- Créer un access token dans Docker Hub
- Définir la description sur
Podman tutorialet les permissions surRead & Write - Créer un private repository
- Se connecter avec
podman login docker.io
- Si
docker.ioest la première entréeunqualified-search-registriesdansregistries.conf, il peut être omis, mais préciser le registre est une bonne pratique - Si aucun registre n’est fourni,
podman loginéchoue avec l’erreur suivanteError: no registries found in registries.conf, a registry must be provided
- Après connexion, il est possible de pousser l’image
hello-worldvers un private repository, de supprimer l’image publique locale, puis d’exécuter un conteneur depuis l’image du private repository - Sans identifiants de connexion valides, le pull d’une image privée provoque une erreur d’accès refusé et d’authentification requise
- La principale différence visible dans l’usage des registres privés est qu’on écrit
podmanau lieu dedocker, et Podman peut être utilisé avec les private registries courants
Exécuter plusieurs conteneurs avec Podman Compose
- Lorsque plusieurs conteneurs doivent être exécutés comme une seule unité, Podman propose plusieurs options
- Podman Compose
- pods
- manifests Kubernetes
- L’exemple utilise Podman Compose pour lancer WordPress et MySQL
- Podman Compose est un outil piloté par la communauté qui implémente la Compose specification et s’intègre à Podman
- Il dépend de Python 3 et, dans l’exemple, il est installé avec pipx
- La sortie d’installation d’exemple indique
podman-compose 1.0.6 - La version de Podman utilisée est
4.3.1
- La sortie d’installation d’exemple indique
- Si
pipxs’installe dans$HOME/.local/bin, ce chemin peut ne pas se trouver dans$PATHpipx ensurepathpermet d’ajouter ce chemin- Il faut ouvrir un nouveau terminal ou recharger le fichier de configuration du shell
Exemple WordPress et MySQL
- L’exemple définit l’utilisateur, le mot de passe et le nom de la base de données dans un fichier
.env, puis configure les services WordPress et MySQL dansdocker-compose.yml - Lors de l’exécution de
podman-compose up -d, Podman Compose analysedocker-compose.yml - Traitement du service
wordpress- Recherche le volume external nécessaire et le crée s’il n’existe pas
- Recherche le network approprié et le crée s’il n’existe pas
- Lance le conteneur
wordpress - Si l’image locale n’existe pas, récupère
wordpress:latestdepuis le registredocker.ioconfiguré
- Traitement du service
db- Crée le volume
podman-tutorial_db - Vérifie le réseau existant
- Lance le conteneur
mysql:5.7 - Si l’image locale n’existe pas, la récupère depuis Docker Hub
- Crée le volume
- Après exécution, la page d’installation de WordPress est accessible sur
localhost:8080 - La sortie de
podman psindique que les conteneurswordpressetdbsont en cours d’exécutionwordpressa un port mappé en0.0.0.0:8080->80/tcpdbs’exécute avec l’imagemysql:5.7
- La liste des images affiche
docker.io/library/wordpress:latestetdocker.io/library/mysql:5.7 - La liste des réseaux affiche le réseau
podmanpar défaut et le réseaupodman-tutorial_defaultcréé par Podman Composepodman-tutorial_defaultest créé pour isoler les conteneurs définis dansdocker-compose.ymldes autres conteneurs du même système
- La liste des volumes affiche
podman-tutorial_dbetpodman-tutorial_wordpress podman-compose downarrête et supprime les conteneurs, mais conserve les réseaux et les volumes- La suppression de volumes se fait avec
podman volume rm - La suppression de réseaux se fait avec
podman network rm
- La suppression de volumes se fait avec
- Les commandes sont presque identiques à Docker et Docker Compose ; la différence est qu’on tape
podmanetpodman-composeau lieu dedockeretdocker-compose
Critères de choix
- Podman est une alternative pratique à Docker pour exécuter des workloads conteneurisés
- Il peut accomplir la plupart des tâches que Docker sait faire, avec l’avantage de ne pas nécessiter de démon en arrière-plan
- Il fournit aussi des fonctionnalités absentes de Docker
- travailler avec des fichiers manifest Kubernetes
- organiser des conteneurs individuels en pods
- Si vous avez besoin d’une solution de gestion de conteneurs plus légère et plus sûre, Podman peut être le meilleur choix
- Si vous privilégiez un écosystème puissant et un vaste soutien communautaire, Docker peut être plus adapté
- Pour aller plus loin, vous pouvez consulter le site officiel de Podman, la documentation et la communauté
1 commentaires
Avis sur Hacker News
J’aimais l’époque où Podman prenait en charge les fichiers d’unité systemd. Cela permettait de démarrer et de mettre à jour automatiquement via systemd non seulement des conteneurs, mais aussi des pods entiers
Puis ils ont supprimé cette fonctionnalité et commencé à pousser Quadlet. Pour un conteneur seul, on peut utiliser un fichier d’unité, mais pour un pod il faut passer par une définition de cluster Kubernetes
En plus, contrairement à Docker, les conteneurs respectent les définitions SELinux, donc je me suis retrouvé plusieurs fois embêté parce qu’ils n’arrivaient pas à accéder à des répertoires montés
Au final, je ne comprends pas ce que Podman est censé nous faire faire. Utiliser Kubernetes ? Ne pas mapper de chemins logiques et créer des répertoires dédiés pour tout ?
Cette fonctionnalité n’utilise pas l’ancienne fonctionnalité Podman désormais abandonnée, elle écrit directement les fichiers d’unité, et personnellement je l’ai trouvée bien plus fluide que l’ancienne approche Podman
Pour l’activer, c’est
$ podman-compose systemd -a create-unit, et pour enregistrer l’unité systemd, on utilise$ podman-compose systemd -a register, puis$ systemctl --user enable --now "podman-compose@$PROJECT_NAME"Les mises à jour se font avec
$ podman-compose pull, puis$ systemctl --user restart "podman-compose@$PROJECT_NAME".$PROJECT_NAMEest généralement le nom du répertoireSi vous voulez vérifier, le code source de la fonctionnalité est ici : https://github.com/containers/podman-compose/blob/f6dbce3618...
J’utilise encore podman 4.3.1, mais je ne vois pas pourquoi cette approche cesserait de fonctionner dans les versions ultérieures
Et les fichiers systemd que générait podman-generate-systemd se résumaient au final à exécuter
"podman start containername", donc ils sont aussi faciles à écrire soi-même. Cela dit, contrairement à quelque chose comme docker-compose, le conteneur reste presque une boîte noireL’intérêt de Quadlet, c’est que la définition du conteneur est déclarée dans un fichier
.container. Avant, on écrivait à la main la ligne de commande podman run dans une unité systemd ; de ce point de vue, Quadlet est une grosse amélioration et peut aussi être une alternative à docker-compose. Bien sûr, il y a des avantages et des inconvénientsChaque fois que j’essaie d’exécuter
podman generate systemd [...], ça me rappelle qu’il y a eu cette transitionSi je n’y suis pas confronté souvent, c’est parce que je me suis créé un rôle Ansible qui gère ça correctement
Malgré tout, j’ai vraiment l’impression que Podman a perdu le cap. Puisqu’ils ont déjà accepté l’idée de maintenir des fichiers d’unité et de concevoir les relations entre eux, j’aimerais juste qu’ils nous laissent utiliser le générateur. Quadlet, ou le fait que ce soit soi-disant mieux, ne m’intéresse pas
containers.conf:[containers] label=falseSi le niveau de sécurité par défaut de Podman ne vous convient pas, il existe généralement un moyen de le désactiver
Ce modèle m’a paru très intuitif, mais l’appliquer à Docker Compose demandait beaucoup de migration manuelle
J’ai donc créé un outil qui convertit les fichiers Compose en configuration NixOS, afin qu’ils puissent être interprétés et gérés nativement : https://github.com/aksiksi/compose2nix
Il y a un avantage décisif, rarement cité, qui devrait faire préférer Podman à Docker : Docker casse la configuration réseau
Essayer de faire tourner en même temps Docker et des machines virtuelles KVM avec des bridges est un cauchemar, alors que Podman cohabite bien mieux avec la configuration par défaut
Les VPN aussi ont souvent été cassés par Docker, ou ont cassé Docker. Je ne sais pas exactement comment fonctionne le réseau de Podman en interne, mais il semble au moins conçu pour ne pas gêner le reste du système. Je ne dirais jamais ça de Docker
À mes yeux, les Dockerfile sont de la pure merde. Des langages existants suffisent largement, et je déteste vraiment quand des « développeurs qui s’ennuient » inventent un nouveau DSL ou langage de programmation. Encore plus quand c’est du YAML ; ce n’est pas le cas ici, mais Dockerfile est un excellent exemple de pourquoi il faut arrêter ce genre de choses
Si l’on regarde Buildah sans
bud, la raison devient évidente. Dès que le cas d’usage sort un peu du chemin standard, on peut utiliser Bash, Fish ou ce qu’on veut, au lieu d’un DSL bancal et irritantCes mauvaises décisions se retrouvent dans tout l’écosystème Docker. DCS et ses alternatives toujours inachevées en sont aussi des exemples. Au lieu d’utiliser un protocole de signature établi comme Cosign, ils ont voulu créer un système complexe difficile à automatiser, et particulièrement pénible pour la rotation des clés
Je suis content que Podman soit de plus en plus utilisé. Trop d’outils sont conçus en partant du principe que l’utilisateur ajoute le groupe
sudo docker, et ils cassent dans des configurations Docker soucieuses de la sécurité qui ne donnent pas l’accès root à tout-vaEn tant qu’ingénieur RHEL certifié, j’utilise déjà Podman depuis quelques années
Honnêtement, pour mon usage personnel des conteneurs, je l’apprécie plutôt bien. Mais au travail, nous fournissons toujours Docker aux développeurs. Jusqu’ici, nous n’avions aucun moyen de leur proposer quelque chose qui égale la simplicité de docker compose
Quand nous créons des images de conteneurs, nous utilisons aussi buildah dans les pipelines CI, mais du point de vue des développeurs utilisateurs finaux, docker compose reste dominant
https://www.techrepublic.com/article/how-to-fix-the-docker-a...
J’ai failli me faire avoir à cause de ce problème
Je ne sais toujours pas très bien pourquoi Red Hat investit dans la création d’une alternative à Docker, mais j’aime vraiment le résultat
Podman fait presque tout ce que fait Docker, tout en ajoutant des fonctionnalités comme les pods, ou en proposant souvent une meilleure approche, comme un processus de création de conteneurs sans daemon
Pour les développeurs ordinaires, le plus gros problème sera sans doute Docker Compose ; si vous utilisez un fichier compose simple, il existe un script podman-compose qui cherche à être compatible avec la spécification Docker Compose
Il est aussi possible d’utiliser Podman comme backend de docker-compose [1]. Globalement, en 2024, je ne vois aucune raison d’utiliser Docker sur une machine Linux. Je ne sais pas très bien ce que vaut Podman sur macOS ou Windows
[1] https://www.redhat.com/sysadmin/podman-docker-compose
Si l’on ajoute à cela le fait que Docker a eu, et a encore, un nombre inhabituellement élevé de problèmes de sécurité, et que les conteneurs et images à la Docker sont extrêmement répandus chez les développeurs, Red Hat n’avait guère d’autre choix que de créer sa propre implémentation, plus conforme à la valeur et à l’approche de RHEL
Par exemple, Docker peut fonctionner en rootless, mais ce n’est toujours pas le comportement par défaut. Dans un environnement renforcé, le groupe d’utilisateurs docker, comme l’exécution sans ce groupe, sont difficiles à accepter du point de vue de la sécurité dans de nombreux cas d’usage
Les premières versions de Docker étaient beaucoup trop peu volontaristes pour assurer ne serait-ce qu’une isolation minimale des conteneurs non privilégiés, et même après que les problèmes ont été connus, il a fallu longtemps pour les corriger. Sa manière d’interagir avec le pare-feu, les règles réseau et SELinux pose aussi beaucoup de problèmes. Ce n’est pas rare que Docker soit interdit dans les entreprises qui disposent d’administrateurs système Linux dédiés et soucieux de sécurité
Dès le départ, toute la documentation vous pousse vers une installation GUI agressivement peu conviviale. Elle lance des processus lourds au démarrage, exige pour une raison obscure de créer un compte cloud, et vous sermonne encore en disant qu’il ne faut pas utiliser ce prétendu produit open source au travail
L’alternative non prise en charge consistant à installer « seulement Docker en ligne de commande » était inutilement complexe, et la dernière fois que j’ai essayé, la plupart des VM WSL ne la prenaient même pas en charge par défaut
À l’inverse, avec Podman,
winget install podmansuffit, et il vous laisse tranquille. Je ne démarre la VM Podman que lorsque j’ai besoin d’exécuter des conteneurs ; quand je n’en ai pas besoin, le système se comporte comme avantSi je dois lancer quelque chose avec un fichier compose, il y a podman-compose. Il ne gère peut-être pas les configurations atypiques, mais pour mon usage il a bien fonctionné
La seule chose que Podman ne fait pas vraiment correctement, c’est l’intégration à VS Code, mais les efforts nécessaires pour faire fonctionner Docker sagement sous Windows sont bien plus pénibles que la perte de quelques raccourcis VS Code, donc ce n’est pas un problème
Je recommande Podman comme solution par défaut pour les conteneurs sous Windows. Les seules raisons d’utiliser Docker seraient que l’entreprise paie pour cela, ou que vous ayez une configuration compose complexe ; dans ce cas, cela vaut peut-être la peine de passer à Kubernetes
Il fait des choses qui abîment le système, a galéré pendant des années avec le rootless, sans oublier le verrouillage fournisseur
Podman est ouvert, respecte les standards et s’intègre bien à Kubernetes. La quantité d’efforts que les développeurs ont consacrée à Docker uniquement parce qu’il est arrivé le premier sur le marché des conteneurs faciles est absurde
Si Docker disparaît, Red Hat pourra pousser son agenda d’entreprise avec une main encore plus forte
Podman a des avantages, mais dans la tentative de Red Hat de remplacer tout ce que fait Docker, certaines parties n’ont pas été bien exécutées
Quand on regarde l’histoire de l’approche de Red Hat dans le domaine des conteneurs, on voit aussi beaucoup de temps et d’efforts gaspillés dans des projets auxquels ils auraient pu contribuer et qu’ils auraient pu améliorer
Red Hat n’est pas une entreprise dont l’agenda est de faire ce qui est juste pour ses clients ; il faut donc réfléchir à ce que l’on souhaite dans une perspective plus large
Le seul gros inconvénient de Podman pour macOS est qu’on ne peut pas utiliser le réseau de l’hôte depuis les conteneurs. Mais les cas où l’on veut utiliser le réseau de l’hôte depuis un conteneur sont rares
En revanche, si vous faites des expérimentations réseau dans un conteneur et que vous voulez conserver le même nom d’hôte et la même adresse IP que l’hôte, il faut le garder en tête. Cela dit, j’arrive quand même à contourner cette limite
L’approche et les décisions axées sur la sécurité me paraissent bonnes. J’aime le fait que les réglages par défaut soient sûrs, et que cela fonctionne aussi avec docker compose
Cela dit, je me demande si, si Podman devient suffisamment populaire, il finira un jour par suivre sa propre voie pour les commandes et le format yml. Pour l’instant, il ressemble à un outil qui s’appuie sur Docker et sur le format de fichiers Docker Compose
J’aimerais qu’il existe dans Podman une alternative à Swarm. Aujourd’hui, faute d’orchestration, j’ai l’impression que Kubernetes sert un peu de béquille
Une équipe attentive à la sécurité pourrait, me semble-t-il, mettre au point une manière raisonnable et simple d’exécuter des conteneurs à petite échelle, sans devoir étudier Kubernetes comme un doctorant alors que ses réglages par défaut ne sont pas sûrs. Et cela pourrait tout en conservant la compatibilité avec le format Docker Compose
Je suis d’accord pour dire que les conteneurs rootless et les espaces de noms isolés sont des fonctionnalités de sécurité importantes. Mais c’est aussi possible avec Docker rootless, et ce n’est pas compliqué. Il suffit de le configurer ainsi
J’ai déjà écrit un article expliquant comment configurer Mastodon avec Docker rootless en appliquant toutes les bonnes pratiques actuellement disponibles [1]
L’avantage de continuer à utiliser Docker, c’est qu’il est plus accessible. Il y a davantage de communauté et de blogs, les configurations docker compose sont répandues, et il y a aussi plus de gens autour de soi qui savent l’utiliser
Au final, Podman comme Docker exécutent des processus dans des espaces de noms isolés de l’hôte
[1]: https://du.nkel.dev/blog/2023-12-12_mastodon-docker-rootless...
Qu’on ne se méprenne pas. Podman est excellent et je l’utilise aujourd’hui à la place de Docker, mais au début je l’ai abordé comme un simple substitut à Docker et je me suis fait sérieusement piéger par le mapping UID/GID, les politiques SELinux, une configuration DNS manquante, etc.
Il m’est aussi arrivé plusieurs fois de lancer
system migratepour corriger un problème et de casser toute ma configuration. Il existe tout un système à part autour des ACL de sécurité, du mapping d’identifiants et des labelsSi vous faites un
chmod -Rsous votre dossier personnel, il est probable que tous vos conteneurs meurentJe suis satisfait du résultat, mais on était loin d’une solution qui « marche tout simplement » comme Docker. Cela s’est probablement beaucoup amélioré depuis que j’ai commencé à l’utiliser
De mon point de vue, c’était plus facile à utiliser que Docker. On dirait que les choses se sont améliorées par rapport aux situations décrites plus haut
Dans une perspective plus large, Podman me semble aussi indispensable que l’était Linux autrefois
Même si très peu de gens l’utilisent, sa seule existence empêche ses grands frères propriétaires, bien plus gros, de faire des choses horribles
Quand je dis « Linux autrefois », je ne veux pas dire que Linux est devenu moins important, mais qu’au contraire il est aujourd’hui encore plus indispensable et central