Comment lancer un container Podman avec une image Docker

Dans cet article, nous allons utiliser l’image Docker de Poezio comme exemple concrêt. Si vous souhaitez utiliser l’image docker avec le service docker, je vous invite à lire l’article dédié.

Cette approche peut sembler contre-intuitive, pourtant elle répond à une vraie problématique. À l’heure où j’écris ces lignes, l’image podman de Poezio n’existe pas, et ça va durer. Il y a aussi une volonté de se passer du service Docker, notament pour ne pas avoir besoin des privilèges de l’utilisateur root, pour exécuter simplement un container. Il existe quand même des solutions avec sudo…

Les indications fournies dans cet article sont valides pour l’OS Fedora 35/36, et ne fonctionnent peut-être pas sur l’OS Kubernetes. Cela fera l’objet d’un second article.

Installation du service Podman

Podman n’est pas un service.

# dnf install podman

Il n’y a rien à faire au niveau du système de la machine hôte.

Récupération de l’image Docker dans Podman

Les limites de Podman, et de sa registry, m’ont imposé de ne pas pouvoir créer d’image podman pour Poezio. N’ayant pû créer d’image, et n’ayant pû créer mon compte sur la regsitry en ligne Quay.io (qui est la registry podman), nous sommes forcés d’utiliser l’image Docker, dans podman. C’est décevant.

Il est impossible de construire l’image podman depuis les sources. La dernière fois que j’ai essayé, ça ne passait pas. Par contre, on peut récupérer une image sur la registry docker en ligne. Au moment du « pull », il faut indiquer le chemin complêt de l’image de Poezio.

Pour l’architecture x86_64 (ou amd64) :

$ podman pull docker.io/fantomfp/poezio-omemo:0.14-1.fr.x64

Pour l’architecture arm64v8 :

$ podman pull docker.io/fantomfp/poezio-omemo:0.14-1.fr.aarch64

Pour l’architecture arm32v7 :

$ podman pull docker.io/fantomfp/poezio-omemo:0.14-1.fr.armhfp

Setup de l’arborescence de répertoires

Poezio est un logiciel qui génére des données qui ont besoin d’être stockées, accessibles, indépendament des containers. Le risque de perdre des données avec les containers est réél, une bonne organisation des volumes de containers est très importante.

Voici comment j’organise les répertoires :

Dans le répertoire utilisateur /home/casper, je créée le répertoire « podman », puis je crée un sous-répertoire pour chaque container différent, comme ce qui suit :

podman/poezio-prod
├── config
│   ├── plugins
│   │   └── reminder.cfg
│   └── poezio.cfg
├── data
│   ├── logs
│   ├── omemo
│   ├── plugins
│   └── themes
└── proxychains
    ├── ssh-nse.conf
    ├── template2.conf
    └── template.conf

Puis, changement de propriétaire/groupe sur ces répertoires :

$ pushd $HOME/podman/poezio-prod/
$ find config/ -exec podman unshare chown casper:casper '{}' \;
$ find data/ -exec podman unshare chown casper:casper '{}' \;
$ find proxychains/ -exec podman unshare chown casper:casper '{}' \;
$ popd

La modification est visible avec le nouveau propriétaire/groupe 100999.

$ ll podman/poezio-prod
total 4,0K
drwxr-xr-x. 1 100999 100999 34 23 mai   14:32 config
drwxr-xr-x. 1 100999 100999 44 23 mai   06:30 data
drwxr-xr-x. 1 100999 100999 78 23 mai   06:30 proxychains

Remplacez « casper » par votre utilisateur. ‘man podman-unshare’ pour plus d’infos.

Démarrage du container Podman

L’option -v (volumes du container) a besoin de chemins absolus. Elle ne fonctionne pas avec des chemins relatifs. Pour cette raison, j’utilise la variable d’environnement $HOME.

Dans cette commande, je n’utilise pas proxychains-ng.

C’est presque la même commande pour lancer un container Docker :

$ podman run -ti -e TERM --log-driver none \
-v $HOME/podman/poezio-prod/config:/home/poezio-user/.config/poezio:Z \
-v $HOME/podman/poezio-prod/data:/home/poezio-user/.local/share/poezio:Z \
-v $HOME/podman/poezio-prod/proxychains:/home/poezio-user/proxychains:Z \
docker.io/fantomfp/poezio-omemo:0.14-1.fr.x64 /usr/bin/poezio

Il est bien sûr possible d’ajouter le multiplexeur « tmux » :

$ tmux -2 new-session -s poezio -n jabber 'podman run ...'

Podman est la porte d’entrée vers l’univers Kubernetes. Suite dans le prochain article.

La communauté autour de Poezio

Le salon de discussion poezio@muc.poez.io (XMPP) rassemble les utilisateurs et les développeurs. Mon resenti personnel sur ce salon est excellent. N’hésitez pas à venir faire un tour, l’ambiance est là.


Étiquettes :