Migration de Docker vers Podman

Sommaire
Docker, ce logiciel incroyable dont je vante les mérites depuis quelques années maintenant, possède une version Windows, Docker Desktop, qui est désormais payante pour une utilisation en entreprise. Certaines rumeurs évoquent la possibilité que Docker finisse par être payant sur l’intégralité de leur produit. Il se peut que cela n’arrive jamais, mais dans le doute, il m’a été nécessaire d’envisager des alternatives. Conseillé par mes collègues, je me suis donc intéressé à l’application suivante : Podman.
D’après Wikipedia :
Podman est un logiciel libre permettant de lancer des applications dans des conteneurs logiciels. Il s’agit d’une alternative à Docker, qui permet de lancer les commandes sans les permissions root. À l’inverse de Docker, Podman n’intègre pas de daemon nécessaire à son fonctionnement.
Ca change quoi ?
Les changements entre les 2 solutions sont minimes. En réalité, Docker et Podman se basent sur certaines applications de plus bas niveau. Tout d’abord, seccomp, pour gérer le lien avec le noyau Linux, et runc, pour la création et l’exécution des conteneurs. Docker et Podman partagent donc globalement le même fonctionnement.
La force de Podman, se situe surtout dans sa capacité à pouvoir fonctionner en mode rootless, bien plus logique sur un poste de travail. La migration présentée dans cet article restera toutefois avec une utilisation en tant que root
, afin d’être la plus transparente possible.
Préparation de la migration
Tout d’abord, il est nécessaire de supprimer tous les conteneurs installés par Docker. Ensuite, il faut supprimer les packages et les dépendances. Si vous avez suivi mes tutos, cela se fait via la commande suivante :
sudo apt remove docker.io docker-compose && sudo apt autoremove
Maintenant, on peut passer à l’installation de Podman :
sudo apt install podman podman-compose
Alias
Si vous avez l’habitude d’utiliser la commande docker
, vous pouvez ajouter des liens symboliques pour qu’ils pointent vers podman :
sudo ln -s /usr/bin/podman /usr/bin/docker
sudo ln -s /usr/bin/podman-compose /usr/bin/docker-compose
Ajout du registry Docker
Afin de pouvoir rechercher des images sur le Docker Hub à partir de la commande podman search
, il faut ajouter une configuration à Podman.
Pour cela, modifiez la ligne suivante dans le fichier /etc/containers/registries.conf
:
# unqualified-search-registries = ["exemple.com"]
Et remplacez là par :
unqualified-search-registries = ["docker.io"]
Paramétrage de UFW
Si vous utilisez UFW comme Firewall, vous avez dû remarquer qu’aucune configuration n’est nécessaire pour Docker. Avec Podman, quelques opérations supplémentaires sont à effectuer pour permettre l’accès à vos conteneurs.
Tout d’abord, il faut autoriser les redirections :
sudo ufw default allow FORWARD
Ensuite, si vos conteneurs communiquent entre eux par leur nom (utilisé avec le reverse proxy par exemple), vous devez autoriser la communication sur le réseau de podman :
sudo ufw allow in on podman1
Le script jdocker.sh a été mis à jour en conséquence.
jdocker.sh
Ce script avait été créé pour faciliter l’utilisation de Docker. Ce dernier a été transformé pour fonctionner maintenant avec Docker et Podman. La plupart des commandes sont identiques. Vous y trouverez également des exemples de fichiers docker-compose.yml
adaptés à Podman.
Pour récupérer la nouvelle version, c’est ici.
Conclusion
Podman a été conçu en gardant l’idée de nous faciliter la migration depuis Docker. Il arrive cependant que quelques particularités soient dissimulées ici ou là. Je tâcherai de mettre à jour les fichiers de configurations docker-compose.yml
présents dans les articles de ce site en fonction.
Pour différencier les articles à jour, vous n’aurez qu’à vérifier la présence du tag #podman sous le titre de chaque article. La configuration sera alors commune aux 2 applications.
Dans le cas où vous changerez de solution, je vous souhaite une bonne migration !