Podman (le POD MANager) est un moteur de conteneur compatible OCI, développé par Red Hat en remplacement de Docker. Il est utilisé pour gérer et exécuter des conteneurs, des images et des volumes via une interface de ligne de commande. Docker et Podman sont des logiciels similaires. La seule différence est que Podman n'a pas besoin d'un démon pour exécuter des conteneurs, tandis que Docker a besoin du démon Docker Engine. Podman utilise la bibliothèque libpod pour gérer tout un écosystème de conteneurs.
Dans ce tutoriel, nous allons vous montrer comment installer et utiliser Podman sur Debian 11.
Prérequis
- Un serveur exécutant Debian 11.
- Un mot de passe root est configuré sur le serveur.
Installer Podman
Le paquet Podman est inclus dans le dépôt par défaut de Debian 11. Vous pouvez l'installer en exécutant simplement la commande suivante :
apt-get install podman -y
Une fois le Podman installé, vérifiez la version du Podman à l'aide de la commande ci-dessous :
podman --version
Vous devriez voir la version de Podman dans la sortie suivante :
podman version 3.0.1
Vous pouvez obtenir plus d'informations sur Podman en utilisant la commande suivante :
podman info
Vous obtiendrez le résultat suivant :
host: arch: amd64 buildahVersion: 1.19.6 cgroupManager: systemd cgroupVersion: v2 conmon: package: 'conmon: /usr/bin/conmon' path: /usr/bin/conmon version: 'conmon version 2.0.25, commit: unknown' cpus: 2 distribution: distribution: debian version: "11" eventLogger: journald hostname: debian11 idMappings: gidmap: null uidmap: null kernel: 5.10.0-8-amd64 linkmode: dynamic memFree: 3365183488 memTotal: 4122267648 ociRuntime: name: crun package: 'crun: /usr/bin/crun' path: /usr/bin/crun version: |- crun version 0.17 commit: 0e9229ae34caaebcb86f1fde18de3acaf18c6d9a spec: 1.0.0 +SYSTEMD +SELINUX +APPARMOR +CAP +SECCOMP +EBPF +YAJL os: linux remoteSocket: exists: true path: /run/podman/podman.sock security: apparmorEnabled: true capabilities: CAP_CHOWN,CAP_DAC_OVERRIDE,CAP_FOWNER,CAP_FSETID,CAP_KILL,CAP_NET_BIND_SERVICE,CAP_SETFCAP,CAP_SETGID,CAP_SETPCAP,CAP_SETUID,CAP_SYS_CHROOT rootless: false seccompEnabled: true selinuxEnabled: false
Ajouter un registre OCI
Podman utilise le fichier de configuration du registre /etc/containers/registries.conf pour extraire toutes les images de conteneurs d'Internet. Il vous faudra donc l'éditer et définir le registre :
nano /etc/containers/registries.conf
Ajoutez les lignes suivantes à la fin du fichier :
[registries.insecure] registries = [ ] # If you need to block pull access from a registry, uncomment the section below # and add the registries fully-qualified name. # Docker only [registries.block] registries = [ ]
Enregistrez et fermez le fichier lorsque vous avez terminé.
Comment utiliser Podman
Dans cette section, nous allons vous montrer comment utiliser la commande Podman pour extraire des images et exécuter un conteneur.
Pour extraire une image Debian, exécutez la commande suivante :
podman pull debian
Vous obtiendrez le résultat suivant :
Resolved "debian" as an alias (/etc/containers/registries.conf.d/shortnames.conf) Trying to pull docker.io/library/debian:latest... Getting image source signatures Copying blob 647acf3d48c2 done Copying config 827e561138 done Writing manifest to image destination Storing signatures 827e5611389abf13dad1057e92f163b771febc0bcdb19fa2d634a7eb0641e0cc
Vous pouvez voir votre image téléchargée en utilisant la commande suivante :
podman images
Vous obtiendrez le résultat suivant :
REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/library/debian latest 827e5611389a 11 days ago 129 MB
Ensuite, exécutez un conteneur à partir de l'image Debian à l'aide de la commande suivante :
podman run -dit debian:latest
Vous obtiendrez le résultat suivant :
f85c4df5ab787912c984ec820571da7b95b32736ef94ba691d9ab5019c5b5103
Vous pouvez répertorier tous les conteneurs en cours d'exécution à l'aide de la commande suivante :
podman ps
Vous devriez voir le résultat suivant :
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f85c4df5ab78 docker.io/library/debian:latest bash 13 seconds ago Up 13 seconds ago competent_cori
Pour inspecter le conteneur en cours d'exécution, exécutez la commande Podman en spécifiant l'ID du conteneur :
podman inspect f85c4df5ab78
Vous obtiendrez le résultat suivant :
[ { "Id": "f85c4df5ab787912c984ec820571da7b95b32736ef94ba691d9ab5019c5b5103", "Created": "2021-11-28T07:00:12.795302341Z", "Path": "bash", "Args": [ "bash" ], "State": { "OciVersion": "1.0.2-dev", "Status": "running", "Running": true, "Paused": false, "Restarting": false, "OOMKilled": false, "Dead": false, "Pid": 6881, "ConmonPid": 6878, "ExitCode": 0, "Error": "", "StartedAt": "2021-11-28T07:00:13.551753552Z", "FinishedAt": "0001-01-01T00:00:00Z", "Healthcheck": { "Status": "", "FailingStreak": 0, "Log": null } },
Pour vérifier le journal du conteneur, exécutez la commande suivante :
podman logs f85c4df5ab78
Si vous souhaitez vous connecter au conteneur en cours d'exécution, exécutez la commande suivante :
podman exec -it f85c4df5ab78 /bin/bash
Vous entrerez dans le shell du conteneur comme indiqué ci-dessous :
[email protected]:/#
Pour quitter le shell du conteneur, exécutez la commande suivante :
[email protected]:/# exit
Comment arrêter et supprimer un conteneur
Vous pouvez également utiliser Podman pour démarrer, arrêter et supprimer un conteneur.
Pour arrêter un conteneur en cours d'exécution, exécutez la commande suivante :
podman stop f85c4df5ab78
Vous pouvez maintenant vérifier le conteneur arrêté à l'aide de la commande suivante :
podman ps -a
Vous devriez voir le résultat suivant :
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f85c4df5ab78 docker.io/library/debian:latest bash 3 minutes ago Exited (137) 10 seconds ago competent_cori
Pour supprimer un conteneur arrêté, exécutez la commande suivante :
podman rm f85c4df5ab78
Si vous souhaitez arrêter le dernier conteneur, exécutez la commande suivante :
podman stop --latest
Pour démarrer le dernier conteneur, exécutez la commande suivante :
podman start --latest
Pour supprimer le dernier conteneur, exécutez la commande suivante :
podman rm --latest
Pour supprimer tous les conteneurs en cours d'exécution, exécutez la commande suivante :
podman rm -f `podman ps -aq`
Pour supprimer une image, exécutez la commande suivante :
podman rmi 827e5611389a
Vous obtiendrez le résultat suivant :
Untagged: docker.io/library/debian:latest Deleted: 827e5611389abf13dad1057e92f163b771febc0bcdb19fa2d634a7eb0641e0cc
Conclusion
Dans le post ci-dessus, nous avons expliqué comment installer et utiliser le Podman sur Debian 11. Vous pouvez désormais utiliser le Podman en remplacement de Docker pour exécuter et gérer les conteneurs.