GNU/Linux >> Tutoriels Linux >  >> Linux

Tutoriel Podman - Premiers pas avec Podman

Ce didacticiel explique comment démarrer avec Podman dans les systèmes d'exploitation Linux. À la fin de ce didacticiel Podman, vous apprendrez les bases de Podman, telles que la recherche et le téléchargement d'images, la création d'un nouveau conteneur à partir de l'image, l'exécution d'un conteneur, la suppression d'un conteneur et la création de votre propre image à partir du conteneur, etc.

Avant de commencer avec Podman, assurez-vous d'avoir installé Podman sur votre machine Linux.

  • Qu'est-ce que Podman et comment installer Podman sous Linux

Commencer avec Podman

Podman fournit une interface de ligne de commande (CLI) similaire au Docker moteur de conteneur. En fait, Podman vise à remplacer le client docker fourni par Docker.

Les commandes Podman et Docker sont presque identiques. Vous pouvez simplement remplacer docker avec podman dans la plupart des commandes docker. Par exemple, le docker run la commande devient podman run et docker build devient podman build et ainsi de suite.

Vous pouvez même créer un docker alias pour podman comme ci-dessous :

$ alias docker=podman

Désormais, vous pouvez utiliser à la fois docker et podman commandes en même temps. Par exemple, si vous exécutez docker ps, il exécutera automatiquement podman commande ps. La transition de Docker à Podman est devenue beaucoup plus facile !

1. Obtenir de l'aide de Podman

La première chose que vous voudrez probablement faire après avoir installé une application est de consulter sa section d'aide.

Pour afficher le manuel d'aide de Podman ainsi que la liste des sous-commandes disponibles et des options générales, exécutez :

$podman --help

Pour apprendre l'utilisation de n'importe quelle sous-commande, par exemple attach , faites simplement :

$ podman attach --help

2. Rechercher des images

Heureusement, les images créées par Docker et Podman sont compatibles avec la norme OCI. Ainsi, Podman peut envoyer et extraire des images à partir de registres de conteneurs tels que le Docker Hub et Quay.io .

Cherchons des images Alpine Linux en utilisant la commande :

$ podman recherche alpine

Comme vous pouvez le voir, Podman répertorie les images Alpine du hub Docker et de Quay.

Lorsque vous téléchargez des images, vous pouvez choisir d'où vous souhaitez les obtenir.

De même, vous pouvez rechercher des images basées sur Arch Linux comme ci-dessous :

$ podman recherche archlinux

Docker hub and Quay contient de nombreuses images de différents types. Qu'il s'agisse d'une application ou d'un système d'exploitation, vous trouverez les images de conteneur prédéfinies à partir de ces registres.

3. Télécharger des images

Pour les besoins de ce guide, je vais télécharger l'image de base universelle Redhat 8 (UBI).

Pour télécharger l'image Redhat avec Podman, exécutez :

$ podman tirer redhat/ubi8

Il vous sera demandé de choisir un registre de conteneurs à partir duquel effectuer le téléchargement. J'ai choisi le hub Docker. Vous verrez une petite flèche devant le registre sélectionné.

 ? Veuillez sélectionner une image :Registry.fedoraproject.org/redhat/ubi8:latest Registry.access.redhat.com/redhat/ubi8:latest ▸ docker.io/redhat/ubi8:latest quay.io/redhat/ubi8:latest 

L'image du conteneur sera téléchargée à partir du registre choisi.

 ✔ docker.io/redhat/ubi8:latestTrying pour tirer l'image docker.io/redhat/ubi8:latest...Getting source de blob signaturesCopying a50df8fd88fe fait Copie blob 1cadda38f72d fait Copie 0ced1c7c9b config fait écriture manifeste à l'image destinationStoring signatures0ced1c7c9b23d0e107c7b15d5a0017abbbcf7e64e49a4c9f9efa1b9589ca8b68   

Vous pouvez télécharger et exécuter différents types d'images quel que soit le type de distribution que vous utilisez. Par exemple, vous pouvez télécharger et utiliser des images Alpine sur un hôte Fedora et vice versa.

$ podman pull alpin

Vous pouvez même télécharger une version spécifique d'une image. La commande suivante télécharge l'image Ubuntu version 20.04 :

$ podman pull ubuntu:20.04

Étant donné que nous utilisons Podman en tant qu'utilisateur non root, toutes les images de conteneur sont stockées dans le répertoire personnel de l'utilisateur, c'est-à-dire $HOME/.local/share/containers/storage , au lieu de /var/lib/containers .

$ ls ~/.local/share/containers/storage/ cache libpod mounts overlay overlay-containers overlay-images overlay-layers storage.lock tmp userns.lock

4. Voir les images

Pour afficher la liste des images téléchargées localement, exécutez :

$ images podman

Exemple de résultat :

REPOSITORY TAG IMAGE ID CREATED SIZEdocker.io/library/ubuntu 20.04 1318b700e415 il y a 7 jours 75.2 MBdocker.io/redhat/ubi8 dernier 0ced1c7c9b23 il y a 13 jours 234 MBdocker.io/library/alpine dernier d4ff818577bc il y a 6 semaines 5.87 MB  

Comme vous pouvez le voir, la sortie ci-dessus répertorie le nom du référentiel où nous avons téléchargé les images, la balise d'image, l'identifiant de l'image, la date de création de l'image et la taille de l'image.

Pour ceux qui se demandent, le TAG fait référence à un instantané particulier de l'image Ubuntu (par exemple, 20.04 et plus récent). TAG est juste un nom supplémentaire à une image locale. L'ID D'IMAGE (Par exemple, 1318b700e415 ) est l'identifiant unique de l'image Ubuntu.

5. Exécuter des conteneurs

Un conteneur peut être démarré à l'aide de la balise d'image ou de l'identifiant de l'image.

Commençons un nouveau conteneur avec l'image Redhat UBI en utilisant sa balise :

$ podman run -it ubi8:latest

Cette commande crée un conteneur Redhat 8 en utilisant ubi8:latest image et connecte le conteneur au terminal afin que vous puissiez interagir avec.

Ici,

  • -i  : nous permet d'établir une connexion interactive en saisissant l'entrée standard (STDIN) du conteneur.
  • -t  :Attribue un nouveau pseudo-terminal dans le conteneur Redhat 8.
  • ubi8:latest  :Conteneur Redhat 8 avec TAG "latest".

Après avoir démarré le conteneur, vous arriverez automatiquement dans le shell du conteneur (invite de commande) :

Avez-vous remarqué le numéro 607a288c810d dans la sortie ci-dessus ? Il s'agit de l'ID du conteneur.

Attention : Veuillez noter que l'ID de conteneur et l'ID d'image Docker sont différents .

Vous pouvez commencer à jouer avec votre conteneur maintenant.

Pour revenir au Terminal de votre hôte sans quitter le Conteneur, appuyez sur CTRL+p suivi de CTRL+q .

Vous allez maintenant être détaché du conteneur et renvoyé à la console de la machine hôte. Le conteneur fonctionnera toujours en arrière-plan.

Pour quitter le conteneur, tapez simplement exit depuis la console du Conteneur et appuyez sur la touche ENTRÉE :

# sortie

Cette commande arrêtera le conteneur en cours d'exécution.

Si vous souhaitez exécuter un conteneur avec l'ID IMAGE, remplacez simplement le TAG d'image (ubi8:latest) par l'ID d'image (0ced1c7c9b23) dans la commande précédente :

$ podman run -it 0ced1c7c9b23

Cela démarrera le conteneur Redhat 8.

6. Exécuter des conteneurs en arrière-plan

Vous pouvez également exécuter des conteneurs en arrière-plan détaché.

Pour exécuter un conteneur en mode détaché, nous utilisons -d drapeau :

$ podman run -it -d ubi8:latest

Lorsque nous exécutons le conteneur en mode détaché, Podman affiche l'ID du conteneur dans la sortie standard.

a4846b2454b1eb63e6d532b0f7ef4a05ca19f965caf9cd0d4a2ce17131a05e29

Vérifions les conteneurs en cours d'exécution à l'aide de la commande :

$podman ps

Maintenant, le conteneur s'exécute en arrière-plan.

Vous pouvez l'attacher comme décrit dans la section suivante.

7. Attacher et détacher des conteneurs

Comme indiqué dans la section précédente, vous pouvez vous détacher en toute sécurité d'un conteneur en cours d'exécution en appuyant sur CTRL+p suivi de CTRL+q . Cela vous permettra de revenir au terminal de l'hôte.

Pour vous connecter à nouveau au conteneur, recherchez d'abord l'ID de conteneur en cours d'exécution ou son nom à l'aide de podman ps commande :

$podman ps

Exemple de résultat :

CONTAINER ID IMAGE COMMAND CREATE STATUT PORTS NAMES607a288c810d docker.io/redhat/ubi8:latest /bin/bash il y a 2 heures Up il y a 2 heures cool_cannon

Ici, 607a288c810d est l'ID du conteneur.

Et puis tapez simplement podman attach commande suivie de l'ID du conteneur comme ci-dessous :

$ podman joindre 607a288c810d

Vous pouvez également l'attacher en utilisant le nom du conteneur comme ci-dessous :

$ podman attache cool_cannon

Pour se détacher du conteneur, appuyez simplement sur CTRL+p et CTRL+q .

8. Afficher les conteneurs en cours d'exécution

Pour rechercher ou répertorier les conteneurs en cours d'exécution, saisissez :

$podman ps

Exemple de résultat :

CONTAINER ID IMAGE COMMAND STATUT CRÉÉ PORTS NAMESe783c0202b7d docker.io/library/alpine:latest /bin/sh il y a 37 secondes Up il y a 38 secondes optimistic_murdock

Cela ne listera que les conteneurs en cours d'exécution. Si vous souhaitez répertorier les conteneurs en cours d'exécution et arrêtés, utilisez -a drapeau.

$ podman ps-a

Exemple de résultat :

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES56c20497cbcd docker.io/redhat/ubi8:latest /bin/bash il y a 3 heures Sortie (0) il y a 3 heures wizardly_albattanid23672b15cff docker.io/redhat/ubi8:latest /bin/bash il y a 3 heures Sortie (0) il y a 3 heures nifty_merkle89b2c038e1ba docker.io/redhat/ubi8:latest /bin/bash il y a 3 heures Sortie (0) Il y a 2 heures xenodochial_euler607a288c810d docker.io/redhat/ubi8:latest /bin/bash Il y a 2 heures Quitter (0) Il y a environ une minute cool_cannone783c0202b7d docker.io/library/alpine:latest /bin/sh Il y a 43 secondes Haut il y a 43 secondes optimistic_murdock

9. Supprimer automatiquement le conteneur après l'avoir fermé

Vous pouvez tester un conteneur et simplement le supprimer dès que vous en avez terminé avec le conteneur. Si tel est le cas, vous pouvez supprimer automatiquement le conteneur après l'avoir fermé en utilisant --rm drapeau :

$ podman run -it --rm ubi8:latest

Une fois que vous quittez le conteneur, il sera automatiquement supprimé.

10. Démarrer et arrêter les conteneurs

Comme indiqué précédemment, nous pouvons créer plusieurs conteneurs en utilisant la même image. C'est l'un des plus gros avantages des conteneurs par rapport aux machines physiques ou virtuelles.

Pour créer plusieurs nouveaux conteneurs, nous pouvons utiliser le podman run commande comme décrit dans "5. Exécuter des conteneurs" rubrique.

Pour démarrer (allumer) un conteneur existant, nous faisons simplement :

$ podman start 

De même, nous pouvons arrêter (éteindre) une commande en cours d'exécution avec la commande :

$ podman stop 

Laissez-moi vous montrer un exemple pour que vous compreniez mieux.

Tout d'abord, recherchez la liste de tous les conteneurs :

$ podman ps -a ID DE CONTENEUR IMAGE COMMANDE ÉTAT CRÉÉ PORTS NOMS 56c20497cbcd docker.io/redhat/ubi8:latest /bin/bash il y a 2 jours Quitté (0) il y a 2 jours wizardly_albattani d23672b15cff docker.io/redhat/ubi8:latest /bin/bash il y a 2 jours Quitté (0) il y a 2 jours nifty_merkle 89b2c038e1ba docker.io/redhat/ubi8:latest /bin/bash il y a 2 jours Quitté (0) il y a 2 jours xenodochial_euler 607a288c810d docker.io/redhat/ubi8:latest /bin/bash il y a 2 jours Quitté (0) il y a 2 jours cool_cannon e783c0202b7d docker.io/library/alpine:latest /bin/sh il y a 2 jours Quitté (0) il y a 2 jours optimistic_murdock 

Le nom des conteneurs est affiché dans les NAMES section (dernière colonne) de la sortie ci-dessus.

Je vais démarrer le conteneur nommé wizardly_albattani en utilisant la commande :

$ podman démarre wizardly_albattani

Vérifions s'il est lancé :

$ podman ps ID DE CONTENEUR COMMANDE D'IMAGE ÉTAT CRÉÉ NOMS DES PORTS56c20497cbcd docker.io/redhat/ubi8:latest /bin/bash Il y a 2 jours En haut Il y a 7 secondes wizardly_albattani 

Oui, c'était il y a 7 secondes.

Pour arrêter le conteneur, faites simplement :

$ podman stop wizardly_albattani

11. Attribuer un nom aux conteneurs

Si vous examinez attentivement la sortie des commandes précédentes, Podman attribue des noms aléatoires à chaque fois que vous démarrez un conteneur. Si vous ne nommez pas vos conteneurs, Podman les nommera automatiquement pour vous.

Regardez la capture d'écran suivante. J'ai démarré deux fois le même conteneur avec la même image. Après avoir quitté le conteneur et l'avoir redémarré une deuxième fois, il obtient un nouveau nom même si j'ai utilisé la même image.

Les conteneurs reçoivent un nouveau nom à chaque fois après leur fermeture et leur démarrage à chaque fois.

Vous pouvez cependant attribuer un nom statique aux conteneurs avec --name drapeau comme ci-dessous :

$ podman run -it -d --name ostechnix_redhat ubi8:latest

La commande ci-dessus créera un nouveau conteneur en mode détaché et le nommera ostechnix_redhat .

Pour afficher la liste des conteneurs en cours d'exécution, nous procédons :

$podman ps

Exemple de résultat :

CONTAINER ID IMAGE COMMAND ÉTAT CRÉÉ NOM DES PORTS6fa78116dcb7 docker.io/redhat/ubi8:latest /bin/bash Il y a 4 secondes En haut Il y a 5 secondes ostechnix_redhat 

Avez-vous remarqué le nom du conteneur ? Nous avons donné un nom personnalisé (c'est-à-dire ostechnix_redhat ) au conteneur.

12. Créer des images personnalisées

Podman ne se limite pas au téléchargement et à l'exécution de conteneurs à partir d'images préconfigurées. Vous pouvez également créer vos images personnalisées à partir d'images existantes.

Tout d'abord, démarrez un conteneur existant ou exécutez-en un nouveau.

Je vais créer un nouveau conteneur Ubuntu :

$ podman run -it 1318b700e415

Vous êtes maintenant à l'intérieur du conteneur.

[email protected] :/#

Installez, mettez à niveau ou supprimez simplement toutes les applications du conteneur.

Pour les besoins de ce guide, j'installerai le serveur Web Apache :

[email protected] :/# mise à jour apt
[email protected] :/# apt install apache2 -y
[email protected] :/# service apache2 start

Une fois que vous avez terminé, détachez-vous du conteneur et revenez au terminal de l'hôte en appuyant sur CTRL+p et CTRL+q .

Veuillez noter que le conteneur fonctionne toujours en arrière-plan !

Maintenant, créez l'image à partir du conteneur existant à l'aide de la commande :

$ podman commit b871b0fd5810 ostechnix/ubuntu_apache

Ici,

  • b871b0fd5810 - ID de conteneur Ubuntu.
  • ostechnix – Nom de l'utilisateur qui a créé le conteneur.
  • ubuntu_apache – Nom de l'image créée par l'utilisateur ostechnix.

Vérifiez maintenant si la nouvelle image est créée en listant les images disponibles :

$ images podman

Exemple de résultat :

REPOSITORY TAG IMAGE ID CREATED SIZElocalhost/ostechnix/ubuntu_apache latest 6c9b2fb66400 25 seconds ago 222 MB docker.io/library/ubuntu 20.04 1318b700e415 il y a 10 jours 75.2 MBdocker.io/redhat/ubi8 dernier 0ced1c7c9b23 il y a 2 semaines 234 MBdocker.io/library/alpine dernier d4ff818577bc il y a 7 semaines 5.87 MB

Comme vous le voyez dans la sortie ci-dessus, une nouvelle image appelée ubuntu_apache est créé.

Commençons le nouveau conteneur avec cette image :

$ podman run -it --rm --name apache_webserver -p 8080:80 localhost/ostechnix/ubuntu_apache

Ici, j'exécute Container avec une image nouvellement créée à l'étape précédente. Je mappe également le port local 8080 sur le système local au port 80 à l'intérieur du conteneur.

Une fois le conteneur démarré, assurez-vous que le serveur Web Apache est lancé à l'aide de la commande :

[email protected] :/# service apache2 start

Maintenant, ouvrez votre navigateur dans votre système hôte et accédez à http://localhost:8080 pour vérifier si le serveur Web Apache est en cours d'exécution dans le conteneur.

13. Afficher les journaux des conteneurs

Pour voir tout ce que vous avez fait à l'intérieur de votre conteneur, vous pouvez simplement consulter les journaux du conteneur à l'aide de la commande :

$ podman enregistre apache_webserver

14. Supprimer les conteneurs

Assurez-vous que les conteneurs sont arrêtés :

$ podman stop ostechnix_redhat

Après avoir arrêté le conteneur, supprimez-le à l'aide de la commande :

$ podman rm ostechnix_redhat

De même, supprimez tous les conteneurs un par un, comme indiqué ci-dessus.

La suppression de plusieurs conteneurs un par un peut être une tâche fastidieuse si vous avez un grand nombre de conteneurs. Au lieu de supprimer l'un après l'autre, vous pouvez tout supprimer d'un coup. Fais attention! Il n'y a aucun moyen de récupérer les conteneurs supprimés !

Pour supprimer tous les conteneurs arrêtés en une seule fois, exécutez simplement :

pruneau conteneur $ podman

Tapez "Y" pour confirmer et appuyez sur ENTER clé pour supprimer les conteneurs.

ATTENTION ! Cette opération supprimera tous les conteneurs qui ne sont pas en cours d'exécution.Voulez-vous vraiment continuer ? [o/N] o 2124a1fbc85a6be7d516e747723129bd7bb9c39d3a54951c9a81407d30ded1ab54884f3375947026d4e87b99cb3a09e114c89120b101f5c8c1e614aca963975c56c20497cbcdd9599c2fa729277ecf679ac29f79a0b06af3ae1a135726465ba7607a288c810d2e605d9ba7590f8f7558ef5f96e87897a1cdde471ae9a74b36ad69bbd87b44cb6c9a582749f4ad010b6b273e65f9fe424058fdc0bc55b188d7e489b2c038e1baf6ac59f0da8e43a7efedc7ba73a18ed8d704c879ffdbc7eb7f28a4846b2454b1eb63e6d532b0f7ef4a05ca19f965caf9cd0d4a2ce17131a05e29aa14879baf0919323730539dd949231d5bb89ca4207dd36c02a741316e6d0f18b871b0fd5810f55e75bdd480d5fb34b09b0e293604f88896002a9368a607bf7ed23672b15cffc0a774227dc6b457a8bff5347073a112f6729d63ddf400f19dc7e783c0202b7d7a6664e731feeff4bdb57a79df79080046ed2b728df4bce789d2ebfd6210a6beedce43af0c41296e329d416128752ab603abd44c73117bf5dfd0 

15. Supprimer les images

Vous pouvez supprimer les images qui ne sont plus nécessaires !

Lister toutes les images téléchargées avec la commande :

$ images podman

Exemple de résultat :

REPOSITORY TAG IMAGE ID CREATED SIZElocalhost/ostechnix/ubuntu_apache dernier 6c9b2fb66400 il y a 37 minutes 222 MBdocker.io/library/ubuntu 20.04 1318b700e415 il y a 10 jours 75.2 MBdocker.io/redhat/ubi8 dernier 0ced1c7c9b23 il y a 2 semaines 234 MBdocker.io/library il y a 2 semaines /alpine dernier d4ff818577bc il y a 7 semaines 5,87 Mo

Maintenant, supprimez une image en utilisant son ID d'image ou son nom, comme ci-dessous :

$ podman rmi 6c9b2fb66400

Exemple de résultat :

Non tagué :localhost/ostechnix/ubuntu_apache:latestSupprimé :6c9b2fb66400138738ad12643d8461fbbb859f33d3be3c35181bb9ee9b11748d

De même, supprimez toutes les autres images non utilisées,

Attention : Vous ne pouvez pas supprimer une image actuellement utilisée par des conteneurs en cours d'exécution ou arrêtés.

Conclusion

Dans ce didacticiel complet sur Podman, nous avons fourni 15 exemples pratiques sur la façon de démarrer avec Podman sous Linux. Si vous êtes développeur, apprendre Podman est très important pour faire avancer votre carrière. Apprenez à utiliser Podman à fond. Cela vaut votre temps !


Linux
  1. Démarrer avec NetworkManager sous Linux

  2. Comment démarrer avec Juju?

  3. Comment démarrer avec un serveur cloud FreeBSD

  4. Démarrer avec les serveurs cloud

  5. Démarrer avec Magento sur Debian 10

Premiers pas avec Docker Compose sous Linux

De Docker Compose à Kubernetes avec Podman

Comment remplacer Docker par Podman sur un Mac

Tutoriel de démarrage avec Azure Docker

Comment démarrer avec Arch Linux

Comment démarrer avec Midnight Commander en 2022