Développé par RedHat, Podman est un moteur de conteneur sans démon gratuit et open source conçu pour remplacer le populaire moteur d’exécution Docker. Tout comme Docker, il facilite la création, l’exécution, le déploiement et le partage d’applications à l’aide d’images de conteneurs et de conteneurs OCI (Open Container Initiative). Podman utilise des espaces de noms utilisateur et réseau et par rapport à Docker, Podman est considéré comme plus isolé et sécurisé. La plupart des commandes de Docker fonctionneront dans Podman. et donc si vous êtes habitué à exécuter des commandes Docker, l’utilisation de podman sera un jeu d’enfant.
Dans ce guide, nous apprenons à installer podman au Debian 11 Bullseye.
Installer Podman sur Debian 11
Les packages podman, les bibliothèques et les dépendances sont déjà hébergés sur les référentiels Debian officiels. Par conséquent, vous pouvez facilement installer podman à l’aide du gestionnaire de packages APT.
Tout d’abord, mettez à jour les listes de packages :
$ sudo apt update
Ensuite, installez le moteur de conteneur podman comme suit :
$ sudo apt install podman
Lorsque vous êtes invité à continuer, tapez « Y » et appuyez sur ENTRÉE.
Pour vérifier la version de Podman installée, exécutez :
$ podman --version
Pour obtenir plus de détails sur le moteur de conteneur podman, exécutez la commande :
$ sudo podman info
Vous devriez voir une rafale de sortie affichant des détails complexes tels que ce que nous avons ci-dessous.

Configurer les registres Podman
Le fichier de registre registry.conf
est un fichier de configuration qui spécifie les registres de conteneurs à utiliser chaque fois que vous souhaitez envoyer ou extraire une image. Le chemin complet du fichier est /etc/containers/registries.conf
. Il existe divers registres de conteneurs, notamment Docker Hub, Quay.io, RedHat et bien d’autres.
Vous pouvez afficher le fichier à l’aide de votre éditeur de texte comme indiqué
# sudo /etc/containers/registries.conf
Dans Docker, le seul registre de conteneurs est Docker Hub. Podman offre aux utilisateurs plus de liberté pour rechercher et extraire des images de n’importe quel registre. Vous pouvez définir la liste des registres de conteneurs en ajoutant la ligne suivante.
registres-de-recherche non qualifiés = [ ‘registry.access.redhat.com’, ‘registry.redhat.io’, ‘docker.io’]
Lors de l’exécution du podman search
ou podman pull
commande, podman contactera ces registres en commençant par le premier dans cet ordre. Save les modifications et quittez le fichier.
Recherche d’images
Avant d’extraire des images de conteneurs, il est prudent de rechercher leur disponibilité dans divers registres.
Pour example
$ sudo podman search nginx

La sortie vous présente une mine d’informations, notamment le nom du registre, le nom de l’image et une brève description.
Connexion à un registre
Avant de commencer à extraire ou à envoyer des images, vous devez vous connecter à un registre. Dans le example ci-dessous, je me connecte à mon compte Redhat qui, en fait, me donne accès au registre.
$ sudo podman login registry.access.redhat.com

Pour vous déconnecter du registre, exécutez la commande :
$ sudo podman logout registry.access.redhat.com
Tirer une image
Pour extraire une image, utilisez la syntaxe :
$ sudo podman pull image_name
Pour example, pour extraire les images de construction officielles de Nginx, exécutez la commande :
$ sudo podman pull docker.io/library/nginx

Essayons de tirer une autre image. Nous allons extraire l’image officielle MongoDB comme suit.
$ sudo podman pull docker.io/library/mongo

Lister une image
Pour répertorier toutes les images, exécutez la commande.
$ sudo podman images

Créer un conteneur à partir d’une image
Maintenant que nos images résident sur le système Debian, nous pouvons lancer un conteneur en utilisant la syntaxe indiquée. L’option -d exécute le conteneur en arrière-plan et le --name
l’option spécifie un nom personnalisé pour le conteneur
$ sudo podman run -d --name container_name image
Pour example, pour lancer un conteneur en arrière-plan appelé webserv1 à partir de l’image Nginx, exécutez la commande :
$ sudo podman run -d --name webserv1 docker.io/library/nginx
Vous pouvez lancer plusieurs conteneurs à partir de la même image. Lançons un autre conteneur appelé webserv2 à partir de la même image Nginx.
$ sudo podman run -d --name webserv2 docker.io/library/nginx

Répertorier les conteneurs
Dans cette section, nous examinerons diverses commandes que vous pouvez utiliser avec des conteneurs.
Pour vérifier les conteneurs en cours d’exécution, exécutez la commande :
$ sudo podman ps
La sortie est présentée dans des colonnes qui fournissent des informations telles que l’ID du conteneur, le nom de l’IMAGE, la commande exécutant le conteneur, la date de création et l’état.

Pour répertorier tous les conteneurs, y compris ceux qui sont sortis, exécutez :
$ sudo podman ps -a
Arrêter un conteneur
Pour arrêter un conteneur, utilisez la syntaxe
$ sudo podman stop CONTAINER_ID
OU
$ sudo podman stop container_name
Dans le example, ci-dessous, j’ai arrêté le premier conteneur répertorié à l’aide de son ID de conteneur
$ sudo podman stop 9daeaabdfdfc
Vous pouvez vérifier que le conteneur a été arrêté en utilisant le podman ps
commander. Nous pouvons clairement voir qu’après avoir arrêté l’image, nous n’avons qu’une seule image en cours d’exécution.

le podman ps -a
La commande listera les deux conteneurs qui composent le conteneur qui vient d’être arrêté.
$ sudo podman ps -a

Démarrage d’un conteneur
Pour démarrer un conteneur, utilisez la syntaxe :
$ sudo podman start CONTAINER_ID
OU
$ sudo podman start container_name
Pour example, pour démarrer webserv1, exécutez :
$ sudo podman start webserv1

Accéder au shell d’un conteneur
L’accès au shell d’un conteneur est mieux démontré avec un conteneur d’un système d’exploitation.
Ici, nous allons télécharger ou extraire une image Ubuntu :
$ sudo podman pull docker.io/library/ubuntu
À partir de l’image, nous allons créer ou lancer un conteneur et accéder au shell en utilisant le -it
option.
$ sudo podman run --name ubuntu -it docker.io/library/ubuntu /bin/bash

- -i, –interactive Garder STDIN ouvert même s’il n’est pas connecté
- -t, –tty Alloue un pseudo-TTY. Le défaut est faux
Consulter les logs d’un conteneur
Pour vérifier les journaux d’un conteneur, utilisez la syntaxe :
$ sudo podman logs container_name
Pour example:
$ sudo podman logs webserv2

Afficher les statistiques du conteneur
Pour afficher les statistiques de tous les conteneurs en cours d’exécution, exécutez :
$ sudo podman stats

Inspecter un conteneur
Pour imprimer des détails complexes sur un conteneur, utilisez l’option inspecter :
$ sudo podman inspect webserv2
Cela imprime une sortie longue au format JSON.

Utilisez l’option –format pour filtrer la sortie. Pour example pour imprimer l’adresse IP de l’exécution du conteneur webserv2
$ sudo podman inspect webserv2 --format '{{.NetworkSettings.IPAddress}}'
Vous pouvez alors effectuer des informations supplémentaires sur l’IP, par exemple example utilisant curl pour récupérer les en-têtes HTTP.
$ curl -I ip-address

Supprimer un conteneur
Pour supprimer ou supprimer complètement un conteneur, arrêtez d’abord le conteneur, s’il est en cours d’exécution, puis supprimez-le. Dans ce example, nous avons arrêté et supprimé le conteneur websev1.
$ sudo podman stop webserv1
Retirez ensuite le conteneur arrêté.
$ sudo podman rm webserv1

Supprimer une image
Pour supprimer une image, assurez-vous d’abord d’avoir arrêté et supprimé tous les conteneurs qui ont été lancés à partir de l’image. Ensuite, utilisez le rmi
option comme indiqué.
$ sudo podman rmi image_name
Pour example, pour supprimer l’image ubuntu, exécutez la commande :
$ sudo podman rmi docker.io/library/ubuntu

Installer le dernier Podman – Compiler à partir de la source
Vous pouvez tester la dernière version de Podman en installant la version de développement à partir de la source.
01. Créer et exécuter des dépendances
sudo apt-get install
btrfs-progs
git
golang-go
go-md2man
iptables
libassuan-dev
libbtrfs-dev
libc6-dev
libdevmapper-dev
libglib2.0-dev
libgpgme-dev
libgpg-error-dev
libprotobuf-dev
libprotobuf-c-dev
libseccomp-dev
libselinux1-dev
libsystemd-dev
pkg-config
runc
make
libapparmor-dev
gcc
cmake
uidmap
libostree-dev
02. Installer Conmon
Le point commun est le moniteur de conteneur qui est un petit programme C dont le travail consiste à surveiller le processus principal du conteneur.
git clone https://github.com/containers/conmon
cd conmon
make
sudo make podman
sudo cp /usr/local/libexec/podman/conmon /usr/local/bin/
03. Installer runc
Pour installer la dernière version de runc
git clone https://github.com/opencontainers/runc.git $GOPATH/src/github.com/opencontainers/runc
cd $GOPATH/src/github.com/opencontainers/runc
make BUILDTAGS="selinux seccomp"
sudo cp runc /usr/bin/runc
03. Installer l’interface réseau de conteneurs (CNI)
Le plugin CNI est utilisé pour insérer une interface réseau dans l’espace de noms du réseau de conteneurs.
git clone https://github.com/containernetworking/plugins.git $GOPATH/src/github.com/containernetworking/plugins
cd $GOPATH/src/github.com/containernetworking/plugins
./build_linux.sh
sudo mkdir -p /usr/libexec/cni
sudo cp bin/* /usr/libexec/cni
Configurer le réseau
sudo mkdir -p /etc/cni/net.d
curl -qsSL https://raw.githubusercontent.com/containers/libpod/master/cni/87-podman-bridge.conflist | sudo tee /etc/cni/net.d/99-loopback.conf
Ajouter la configuration
sudo mkdir -p /etc/containers
sudo curl -L -o /etc/containers/registries.conf https://src.fedoraproject.org/rpms/containers-common/raw/main/f/registries.conf
sudo curl -L -o /etc/containers/policy.json https://src.fedoraproject.org/rpms/containers-common/raw/main/f/default-policy.json
04. Installer Podman à partir de la source
git clone https://github.com/containers/podman/ $GOPATH/src/github.com/containers/podman
cd $GOPATH/src/github.com/containers/podman
make
sudo make install
$ podman --version
podman version 4.0.0-dev
Conclusion
Nous espérons avoir fourni une base solide sur votre cheminement pour devenir un meilleur pro de l’utilisation de podman pour créer et gérer des conteneurs. Ce guide vous a guidé tout au long de l’installation de podman sur Debian 11 Buster.