Comment installer Podman sur Debian 11

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

Vérifier la version de Podman

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.

vérifier les informations de Podmanvérifier les informations de Podman

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

Rechercher une image de conteneur NginxRechercher une image de conteneur 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

Podman se connecte à un registrePodman se connecte à un registre

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

extraire une image Nginx à l'aide de podmanextraire une image Nginx à l’aide de podman

Essayons de tirer une autre image. Nous allons extraire l’image officielle MongoDB comme suit.

$ sudo podman pull docker.io/library/mongo

Extraire l'image Mongo à l'aide de podmanExtraire l’image Mongo à l’aide de podman

Lister une image

Pour répertorier toutes les images, exécutez la commande.

$ sudo podman images

Répertorier les images de conteneurs à l'aide de podmanRépertorier les images de conteneurs à l’aide de podman

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

Lancer un conteneur à partir d’une image

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.

Podman arrête une imagePodman arrête une image

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

$ sudo podman ps -a

Podman vérifie tous les conteneurs, y compris ceux arrêtésPodman vérifie tous les conteneurs, y compris ceux arrêtés

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

Démarrer un conteneur podmanDémarrer un conteneur podman

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

podman gagner interagir shell d'un conteneurpodman gagner interagir shell d’un conteneur
  • -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

Vérifier les journaux des conteneurs avec podmanVérifier les journaux des conteneurs avec podman

Afficher les statistiques du conteneur

Pour afficher les statistiques de tous les conteneurs en cours d’exécution, exécutez :

$ sudo podman stats

Afficher les statistiques des images de conteneursAfficher les statistiques des images de conteneurs

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.

inspecter une image à l'aide de podmaninspecter une image à l’aide de podman

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

Filtrer la sortie de la commande podman inspectFiltrer la sortie de la commande podman inspect

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 un conteneur à l'aide de podmanSupprimer un conteneur à l’aide de podman

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

Supprimer une image avec podmanSupprimer une image avec podman

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.