GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Tutoriel Podman - Les bases pour les débutants

Présentation

Podman est un moteur de conteneur permettant d'exécuter et de gérer des conteneurs OCI sous Linux. RedHat le développe comme une alternative directe à Docker, la célèbre plateforme de gestion de conteneurs qui a tout déclenché.

Ce didacticiel vous aidera à comprendre le fonctionnement de Podman en expliquant sa syntaxe de commande et en fournissant des exemples concrets d'utilisation des commandes Podman.

Prérequis

  • Accès à une ligne de commande/fenêtre de terminal.
  • Podman installé et configuré (voir Comment installer Podman sur macOS ou Comment installer Podman sur Ubuntu).

Commandes Podman

Podman a une syntaxe de commande très similaire à Docker. Le podman run principal est suivie des commandes et options de gestion de Podman :

podman [command] [options]

Vous trouverez ci-dessous un tableau contenant toutes les commandes Podman :

Commande Description
attach  Attacher à un conteneur en cours d'exécution à l'aide de son nom ou de son ID.
auto-update Utilisez la politique de mise à jour automatique des conteneurs pour mettre à jour les conteneurs.
build  Utilisez les instructions de Containerfiles pour créer une image.
commit  Créer une nouvelle image reflétant les modifications apportées à un conteneur.
container  Gérer les conteneurs Podman.
cp  Copier des fichiers/répertoires d'un conteneur vers le système de fichiers local et vice versa.
create  Créer un conteneur sans le démarrer.
diff  Afficher les modifications apportées à un conteneur ou à une image.
events  Afficher les événements podman.
exec  Exécuter un processus dans un conteneur en cours d'exécution.
export  Créer une archive tar contenant le contenu du système de fichiers du conteneur.
generate  Créer une sortie structurée basée sur un conteneur, un volume ou un pod.
healthcheck  Gérer les vérifications de l'état des conteneurs.
history  Afficher l'historique des images.
image  Gérer les images.
images  Liste des images disponibles dans le stockage local.
import  Importer une archive d'image de système de fichiers.
info  Afficher les informations système du podman.
init  Initialiser les conteneurs.
inspect  Afficher la configuration du conteneur ou de l'image.
kill  Tuer les conteneurs.
load  Charger une image disponible dans l'archive du conteneur.
login  Connexion au registre des conteneurs.
logout  Déconnectez-vous d'un registre de conteneurs.
logs  Afficher les journaux du conteneur.
machine  Gérer la machine virtuelle Podman.
manifest  Créer et gérer des listes de manifestes et des index d'images.
mount  Monter le système de fichiers racine d'un conteneur ou répertorier les conteneurs actuellement montés.
network  Gérer les réseaux Podman.
pause  Pause des processus de conteneur.
play  Lire un conteneur, un volume ou un pod.
pod  Gérer les pods Podman.
port Répertorier les mappages de port ou répertorier un mappage spécifique au conteneur pour le conteneur.
ps  Répertorier les conteneurs en cours d'exécution.
pull  Copier une image d'un registre vers un stockage local.
push  Pousser une image d'une machine locale vers une destination spécifiée.
rename  Renommer un conteneur.
restart  Redémarrer un conteneur.
rm  Supprimer un conteneur.
rmi  Supprimer une image du stockage local.
run  Exécuter une commande dans un conteneur.
save  Enregistrer l'image dans un fichier local.
search  Rechercher une image dans un registre.
secret  Manipuler des secrets.
start  Démarrer un conteneur.
stats  Afficher les statistiques d'utilisation des ressources.
stop  Arrêter un conteneur.
system  Gérer les systèmes Podman.
tag  Attribuer un nom à une image locale.
top  Afficher les processus en cours d'exécution dans un conteneur.
unmount  Démonter le système de fichiers racine d'un conteneur.
unpause  Réactiver les processus de conteneur.
unshare  Lancer un processus dans un nouvel espace de noms d'utilisateur.
untag  Supprimer les balises d'une image locale.
version  Afficher les informations de version.
volume  Gérer les volumes de conteneurs.
wait  Attendre qu'un conteneur s'arrête.

Tutoriel Podman

Bien que Podman soit principalement un moteur de conteneur - il est conçu pour créer et exécuter des conteneurs OCI, les utilisateurs peuvent également utiliser podman run commandes pour gérer les images de conteneurs.

Les sections suivantes expliquent comment utiliser Podman pour créer et manipuler des images, des conteneurs et des pods.

Afficher le manuel d'aide de Podman

Vous pouvez référencer rapidement la documentation de Podman à l'aide de la ligne de commande. Pour afficher les podman run disponibles commandes dans votre terminal, tapez :

podman help

Pour voir le manuel complet de Podman, utilisez la commande man :

Images Podman

La création et la gestion d'images dans Podman sont effectuées avec Buildah, un outil de création d'images qui utilise une interface coreutils de niveau inférieur. Lorsqu'un utilisateur exécute un podman run commande liée aux images, Podman appelle Buildah pour effectuer l'action.

Les sections suivantes illustrent certaines commandes importantes de gestion des images.

Recherche d'images

Rechercher dans les registres les images disponibles à l'aide de la search commande.

podman search [search-term]

Limitez le nombre de résultats avec le --limit option. Par exemple, pour produire trois résultats pour les "centos" terme de recherche, tapez :

podman search --limit 3 centos

Inspecter l'image

Avant d'extraire une image Podman, il est recommandé de l'inspecter. Utilisez le podman inspect commande et le système génère des métadonnées d'image, telles que la taille du fichier, l'architecture, le système d'exploitation, etc.

podman inspect [repository or image ID]

Utilisez le --format option avec podman inspect commande pour obtenir des métadonnées spécifiques. Dans l'exemple ci-dessous, la commande renvoie uniquement la description de l'image :

podman inspect --format=’{{.Labels.description}}’ [image ID]

Téléchargement d'images

L'extraction d'images à partir de référentiels en ligne est effectuée à l'aide du podman pull commande. La syntaxe est :

podman pull [registry/image]

L'exemple illustre l'extraction d'une image de fedoraproject.org registre :

Exécuter des images

Exécutez des images Podman avec podman run :

podman run [image]

Si l'image n'est pas disponible localement, Podman l'extrait d'un registre en ligne, puis l'exécute en tant que conteneur.

Affichage des images

Les podman images la sous-commande est utilisée pour lister les images disponibles localement :

podman images

Utilisez les options pour affiner les résultats de la recherche. Le --filter L'option filtre la sortie en fonction des conditions que vous fournissez. Par exemple, la commande suivante recherche toutes les images contenant "redhat" au nom :

podman images --filter reference=redhat

Création d'images personnalisées

Pour créer des images personnalisées avec Podman, vous avez besoin d'un dockerfile ou d'un containerfile. Ces fichiers contiennent des instructions que l'outil Buildah utilise pour créer une image.

La construction des fichiers est effectuée avec le podman build commande. Par exemple, pour créer une image à partir d'un répertoire contenant le script d'instruction, exécutez la commande suivante :

podman build .

Buildah rassemble le contexte de fichier nécessaire et crée une image.

Supprimer des images

Le podman rmi La commande est utilisée pour supprimer des images du stockage local. Avant de supprimer une image Podman, assurez-vous que tous les conteneurs associés ont été arrêtés et supprimés.

Supprimer une image en utilisant le podman rmi commande suivie du nom ou de l'ID de l'image :

podman rmi [image-name-or-id]

La sortie confirme que l'image a été supprimée.

Conteneurs Podman

La création et la gestion de conteneurs est la fonction principale de Podman. Trouvez certaines des commandes de gestion de conteneurs les plus courantes dans la section ci-dessous.

Exécuter des conteneurs

L'exécution de podman run La commande a les mêmes fonctions que docker run. Les options qui suivent la commande dépendent du type de conteneur en cours d'exécution. L'exemple ci-dessous illustre l'exécution d'un httpd exemple, en utilisant une image disponible dans le docker.io référentiel :

podman run -p 8080:80/tcp docker.io/library/httpd

La commande exécute le conteneur et affiche son invite de commande.

Quittez l'invite du conteneur en appuyant sur Ctrl + C . Cette commande quittera le conteneur.

Exécuter des conteneurs en arrière-plan

Pour ignorer l'invite du conteneur et exécuter le conteneur en arrière-plan, utilisez la syntaxe suivante :

podman run -dt -p 8080:80/tcp docker.io/library/httpd

Si le conteneur démarre avec succès, la sortie de la commande affiche l'ID long du conteneur.

Attacher aux conteneurs

Entrez dans le conteneur avec le podman attach commande :

podman attach [container-name-or-id]

L'exemple montre l'attachement à un conteneur Alpine Linux en cours d'exécution à l'aide de l'ID de conteneur.

Affichage des conteneurs en cours d'exécution

Afficher les conteneurs en cours d'exécution avec le ps commande :

podman ps

La sortie de la commande affiche une liste contenant des informations de base sur l'exécution des conteneurs.

Suppression automatique des conteneurs après la fermeture

Utilisez le --rm option avec podman run pour supprimer automatiquement un conteneur :

podman run --rm -dt -p 8080:80/tcp alpine:latest

Démarrage et arrêt des conteneurs

Utilisez start et stop commandes pour démarrer et arrêter les conteneurs existants.

podman start [container-id]

La sortie affiche l'ID du conteneur.

podman stop [container-id]

L'ID du conteneur arrêté s'affiche.

Attribuer des noms aux conteneurs

Vous pouvez nommer les conteneurs en cours d'exécution à l'aide de l'option --name avec le podman run commande. Par exemple, pour nommer un conteneur Alpine Linux, utilisez la commande suivante :

podman run --name AlpineTest -dt -p 8080:80/tcp alpine:latest

L'image ci-dessous montre que podman run était un succès. Le podman ps la commande répertorie les conteneurs Podman en cours d'exécution, et le nom est visible dans le NAMES colonne.

Afficher les journaux des conteneurs

Afficher les logs du conteneur au moment de l'exécution avec les podman logs commande.

podman logs [container-name-or-id]

Utilisez le -l flag pour afficher les journaux du conteneur le plus récent.

Retirer les conteneurs

Pour supprimer un conteneur Podman, assurez-vous d'abord que le conteneur a été arrêté. Ensuite, utilisez le podman rm commande suivie du nom ou de l'ID du conteneur.

podman rm [container-name-or-id]

L'exemple ci-dessous montre la suppression de l'AlpineTest conteneur.

Pour supprimer un conteneur en cours d'exécution ou inutilisable, ajoutez le -f option.

podman rm -f [container-name-or-id]

Pour supprimer plusieurs conteneurs en une seule fois, répertoriez les ID des conteneurs séparés par un espace :

podman rm [container-1-id container-2-id container-3-id]

Gousses Podman

Les pods sont des groupes de conteneurs qui partagent des ressources. Les pods Podman sont la fonctionnalité qui distingue Podman de Docker. Les sections suivantes illustrent certaines des opérations de pod courantes dans Podman.

Répertorier les modules

Utilisez la commande ci-dessous pour répertorier tous les pods disponibles sur le système :

podman pod ls

La liste affiche l'ID du pod, son nom, son état, l'heure de création, l'infra ID et le nombre de conteneurs qu'il contient.

Créer des pods vides

Créez un pod vide dans Podman en utilisant la syntaxe suivante :

podman pod create

La sortie affiche l'ID du pod nouvellement créé.

Ajouter des conteneurs aux pods

Pour ajouter un conteneur à un pod, utilisez le --pod étiquette avec docker run :

podman run [options] --pod [pod-name-or-id] [image]

Dans l'exemple ci-dessous, un conteneur Alpine Linux est attribué au pod avec l'ID e06ed089b454 :

Créer des pods avec des conteneurs

Podman peut créer un conteneur et l'ajouter à un nouveau pod en une seule podman run commande. La syntaxe inclut le --pod étiquette :

podman run [options] --pod new:[pod-name] [image]

L'exemple ci-dessous exécute un conteneur avec le alpine:latest image et l'ajoute à un nouveau pod nommé AlpineTest :

Le podman pod ls la sortie de la commande affiche le nouveau pod avec deux conteneurs.

Démarrer, arrêter et supprimer des pods

Démarrez un pod à l'aide de la commande suivante :

podman pod start [pod-name-or-id]

Pour arrêter un pod, exécutez :

podman pod stop [pod-name-or-id]

Pour supprimer un pod arrêté et son conteneur, utilisez :

podman pod rm [pod-name-or-id]

Pour arrêter et supprimer les conteneurs en cours d'exécution, puis supprimer le pod, utilisez le -f choix :

podman pod rm -f [pod-name-or-id]

Pour supprimer plusieurs pods arrêtés avec une seule commande, répertoriez les ID de pod séparés par un espace :

podman pod rm -f [pod1-id pod2-id pod3-id]

Problèmes potentiels de Podman et comment les résoudre

Cette section répertorie certains problèmes courants de Podman et propose des solutions.

Impossible d'exposer le port privilégié

Podman permet aux utilisateurs non root d'exécuter des conteneurs. Cependant, ils sont limités à la transmission uniquement vers des ports non privilégiés. Si vous tentez de transférer vers un port privilégié en tant qu'utilisateur non root, vous recevez l'erreur suivante :

La solution à ce problème consiste à choisir un port non privilégié ou à exécuter la commande à l'aide de sudo.

Problèmes de recherche de podman

Un autre problème courant est la podman search commande renvoyant une sortie vide.

Ce problème concerne généralement le /etc/containers/registries.conf dossier. Ouvrez le fichier dans un éditeur de texte :

sudo nano /etc/containers/registries.conf

Faites défiler vers le bas du fichier et assurez-vous que Podman a des registres à rechercher.

Si vous n'avez aucun registre répertorié dans le fichier, vous pouvez ajouter les registres courants, tels que RedHat, Fedora et Docker, en utilisant la syntaxe suivante :

unqualified-search-registries=["registry.access.redhat.com", "registry.fedoraproject.org", "docker.io"]

Enregistrez le fichier. La podman search La liste doit être remplie avec les résultats des registres en ligne enregistrés.

Erreur :configuration non valide fournie

Lors de l'ajout de conteneurs à un pod, le message suivant peut s'afficher :

Error: invalid config provided: published or exposed ports must be defined when the pod is created: network cannot be configured when it is shared with a pod

Ce problème se produit lorsque vous essayez d'ajouter un conteneur avec des ports qui n'ont pas été définis lors de la création du pod. Actuellement, Podman ne le permet pas.


Ubuntu
  1. Tutoriel Python SciPy - Un guide pour les débutants

  2. Tutoriel Jenkins :les bases pour les débutants

  3. Tutoriel de configuration du réseau Netplan pour les débutants

  4. Tutoriel de commande cd Linux pour les débutants (8 exemples)

  5. Tutoriel de commande de date Linux pour les débutants (8 exemples)

Tutoriel de commande Linux OD pour les débutants (6 exemples)

Tutoriel de commande Linux w pour débutants (5 exemples)

Tutoriel de commande Linux ss pour les débutants (8 exemples)

Tutoriel de script Bash pour les débutants

Tutoriel Bash Heredoc pour les débutants

Comment installer Google Chrome sur Ubuntu 20.04 :Tutoriel pour les débutants