Au revoir Docker

Si tu travailles un peu avec les conteneurs, impossible de passer à côté de Docker, la référence du milieu. Pourtant, depuis quelques temps, une alternative commence à faire du bruit : Podman.
Alors c'est quoi cette révolution ? Docker c'est un outil super alors pourquoi vouloir le remplacer par un outil avec moins de "maturité" ?
Fonctionnement de Docker
Pour comprendre pourquoi Podman chamboule un peu tout, il faut d'abord jeter un coup d'oeil à comment Docker fonctionne vraiment.
Au coeur de Docker, il y a le daemon (appele dockerd
). C'est un processus qui tourne en permanence en arrière-plan et qui permet de gérer les images, conteneurs, réseaux, volumes, ... Tout ce que tu demandes via la ligne de commande, en fait le client Docker (docker
) qui envoie ses ordres à ce daemon.
Ce qui pose le plus gros souci, c'est que tous vos conteneurs reposent donc sur un Daemon unique, et que si celui-ci cesse de fonctionner, tous vos conteneurs sont arrêtés immédiatement, entraînant une interruption complète de vos services.
Pour gérer ce fameux daemon, la plupart des systèmes Linux modernes utilisent systemd. C'est l'outil qui contrôle les services sytème : démarrer, arrêter, redémarrer un service.

Voici ce que ce Daemon central implique :
- Le daemon tourne avec des droits élevés (root) (faux depuis peu)...
- Parce qu'il est centralisé, tout passe par lui, ce qui peut entraîner des points de blocage ou des difficultés à isoler certains processus.
- Pour utiliser Docker, il faut donc que ce daemon soit toujours actif.
Pour résumer, Docker utilise un modèle "centralisé" avec un seul daemon root, et c'est ce que Podman remet en question.
Et Podman ?
Alors la bonne nouvelle : Podman est capable de fonctionner sans daemon.
Podman lance chaque conteneur comme un processus normal de ta machine, un peu comme si tu lançais un programme classique. Chaque conteneur est un processus Linux géré directement par toi, sans passer par un démon central qui tourne en permanence. Quand tu veux que tes conteneurs tournent en arrière-plan ou démarrent automatiquement, Podman s'appuie sur systemd, le gestionnaire de services Linux, pour prendre le relais et assurer leur bon fonctionnement.
Et voici ce que ça change :
- Tu peux lancer des conteneurs sans être root, c'est donc plus safe.
- Pas besoin de se prendre la tête avec un service qui tourne en fond
- Tous tes conteneurs ne dépendent pas d'un seul daemon
- Mode auto-update : peut tenter de mettre à jour automatiquement des conteneurs, et en cas d'échec, il est capable de restaurer la dernière version fonctionnelle du conteneur (rollback automatique)
Ce qui est pratique, c'est que Podman parle quasiment le même langage que Docker. Tu retrouves tes commandes : (podman run
, podman ps
, podman exec ..
, ...)
Les seuls points négatifs (ou pas) :
- Le swarm n'existe pas sous Podman (lol)
- Le podman-compose existe mais semble moins mature...
Alias pour remplacer podman
À ajouter au .bashrc
ou .zshrc
si tu veux migrer de Docker vers Podman sans te tromper de commande :
alias docker='podman'
alias docker-compose='podman-compose'
Recharger le shell :
source ~/.bashrc # ou ~/.zshrc