Comment gérer les conteneurs à l'aide de Podman et Skopeo dans Rhel 8
- 4568
- 567
- Maëlle Perez
L'un des défis auxquels les développeurs sont confrontés dans le passé est d'obtenir des applications à s'exécuter de manière fiable dans plusieurs environnements informatiques. Souvent, les applications n'ont pas fonctionné comme prévu ou ont rencontré des erreurs et ont été complètement échoués. Et c'est là que le concept de conteneurs est né.
Que sont les images de conteneur?
Récipient Les images sont des fichiers statiques qui sont expédiés avec du code exécutable qui s'exécute dans un environnement isolé. Une image de conteneur comprend les bibliothèques système, les dépendances et autres paramètres de plate-forme nécessaires à l'application pour s'exécuter dans divers environnements.
Chapeau rouge Linux Fournit un ensemble d'outils de conteneurs utiles que vous pouvez exploiter pour travailler directement avec des conteneurs Linux en utilisant les commandes Docker nécessitant. Ceux-ci inclus:
- Podman - Ceci est un moteur de conteneur de démon moins pour courir et gérer OCI conteneurs en mode racine ou sans racine. Podman est similaire à Docker et a les mêmes options de commande sauf que Docker est un démon. Vous pouvez tirer, exécuter et gérer des images de conteneurs en utilisant podman de la même manière que vous le feriez avec Docker. Podman Livré avec beaucoup de fonctionnalités avancées, s'intègre entièrement avec systèmes, et offre une prise en charge de l'espace de noms d'utilisateur qui comprend des conteneurs en cours d'exécution sans avoir besoin d'un utilisateur racine.
- Skopeo: Il s'agit d'un outil de ligne de commande utilisé pour copier des images de conteneurs d'un registre à un autre. Vous pouvez utiliser Skopeo pour copier des images vers et depuis un hôte particulier ainsi que copier des images dans un autre registre ou environnement de conteneurs. En plus de copier des images, vous pouvez l'utiliser pour inspecter les images à partir de divers registres et utiliser des signatures pour créer et vérifier les images.
- Buildah: Ceci est un ensemble d'outils de ligne de commande utilisés pour créer et gérer un conteneur OCI images utilisant Docker des dossiers.
Dans cet article, nous nous concentrerons sur la gestion des conteneurs en utilisant podman et Skopeo.
Recherche d'images de conteneur à partir d'un registre distant
Le recherche de podman La commande vous permet de rechercher des registres distants sélectionnés pour les images de conteneurs. La liste par défaut des registres est définie dans le registres.confli fichier situé dans le / etc / conteneurs / annuaire.
Les registres sont définis par 3 sections.
- [registres.recherche] - Cette section spécifie les registres par défaut qui podman peut rechercher des images de conteneurs. Il recherche l'image demandée dans le enregistrement.accès.chapeau rouge.com, enregistrement.chapeau rouge.Io, et docker.Io registres.
- [registres.insécurité]- Cette section spécifie des registres qui n'implémentent pas le cryptage TLS I.E Registres non sécurisées. Par défaut, aucune entrée n'est spécifiée.
- [registres.bloc] - Cela bloque ou nie l'accès aux registres spécifiés de votre système local. Par défaut, aucune entrée n'est spécifiée.
En tant que régulier (non-racine) Utilisateur exécutant la commande podman, vous pouvez définir le vôtre registres.confli dossier sur votre répertoire domestique ($ Home /.config / conteneurs / registres.confli) Pour remplacer les paramètres à l'échelle du système.
Règles lors de la spécification des registres
Lorsque vous spécifiez les registres, gardez à l'esprit ce qui suit:
- Chaque registre doit être enfermé par des citations uniques.
- Les registres peuvent être spécifiés à l'aide d'un nom d'hôte ou d'une adresse IP.
- Si plusieurs registres sont spécifiés, ils doivent être séparés par des virgules.
- Si un registre utilise un port non standard - l'un des ports TCP 443 du port pour sécurisation et 80 pour l'insécurité, - le numéro de port doit être spécifié à côté du nom du registre E.g. enregistrement.exemple.com: 5566.
Pour rechercher un registre une image de conteneur à l'aide de la syntaxe:
# Podman Search Registry / Container_image
Par exemple, pour rechercher un Redis image dans le enregistrement.chapeau rouge.Io Registre, invoque la commande:
# Podman Search Registry.chapeau rouge.IO / redisRechercher le registre de l'image du conteneur
Pour rechercher un Mariadb Running d'image de conteneur.
# Podman Search Registry.chapeau rouge.IO / MARIADBRecherchez l'image de conteneur MariaDB
Pour obtenir une description élaborée d'une image de conteneur, utilisez le --sans trunc
Option avant le nom de l'image de conteneur à partir des résultats que vous obtenez. Par exemple, nous essaierons d'obtenir une description détaillée de l'image de conteneur MariaDB comme indiqué:
# Podman Search - Registre no-trunc.chapeau rouge.IO / RHEL8 / MARIADB-103Liste description de l'image de conteneur MariaDB
Tirer des images de conteneur
Tirer ou récupérer des images de conteneurs d'un registre distant nécessite que vous vous authentifiez d'abord avant toute autre chose. Par exemple, pour récupérer l'image de conteneur MariaDB, connectez d'abord au registre Redhat:
# Podman Connexion
Fournissez votre nom d'utilisateur et votre mot de passe et appuyez surENTRER'Sur votre clavier. Si tout se passe bien, vous devriez recevoir un message de confirmation que la connexion au registre a réussi.
Login a réussi!
Maintenant, vous pouvez extraire l'image à l'aide de la syntaxe indiquée:
# podman pull [:] / [/]:
Le fait référence à l'hôte ou au registre distant qui fournit un référentiel d'images de conteneur sur le TCP
. Le
et le
Spécifiez collectivement une image de conteneur basé sur le
au registre. Finalement, le
L'option spécifie la version de l'image de conteneur. Si aucun n'est spécifié, la balise par défaut - la dernière - est utilisée.
Il est toujours recommandé d'ajouter des registres de confiance, c'est-à-dire ceux qui fournissent un chiffrement et ne permettent pas aux utilisateurs anonymes de créer des comptes avec des noms aléatoires.
Pour tirer l'image MariaDB, exécutez la commande:
# Podman Pull Registry.chapeau rouge.IO / RHEL8 / MARIADB-103
- Le
- enregistrement.chapeau rouge.Io
- Le
- rhel8
- Le
- Mariadb
- Le
- 103
Pour les images de conteneurs ultérieures, aucune autre connexion n'est requise car vous êtes déjà authentifié. Pour tirer un Redis Image du conteneur, exécutez simplement:
# Podman Pull Registry.chapeau rouge.io / rhscl / redis-5-rhel7Image du conteneur redé
Listing des images de conteneurs
Une fois que vous avez terminé de tirer les images, vous pouvez afficher les images existantes sur votre hôte en exécutant la commande Podman Images.
# images podmanÉnumérer les images de conteneur
Inspection des images de conteneurs
Avant d'exécuter un conteneur, c'est toujours une bonne idée de sonder l'image et de comprendre ce qu'il fait. Le podman inspecter La commande imprime une mer de métadonnées sur le conteneur tel que le système d'exploitation et l'architecture.
Pour inspecter une image, exécutez le podman inspecter commande suivie de l'ID d'image ou du référentiel.
# Podman Inspecter l'ID d'image ou # Podman Inspecter le référentiel
Dans l'exemple ci-dessous, nous inspectons le Mariadb récipient.
# Podman Inspecter le registre.chapeau rouge.IO / RHEL8 / MARIADB-103Inspection des images de conteneurs MariaDB
Pour tirer des métadonnées spécifiques pour un conteneur, passez le --format
Option suivie des métadonnées et de l'identité du conteneur (ID d'image ou nom).
Dans l'exemple ci-dessous, nous récupérons des informations sur l'architecture et la description du conteneur de base RHEL 8 qui tombe sous le 'Étiquettes' section.
# podman inspecter - format = '.Étiquettes.Architecture 'ID d'image # Podman Inspect - format =' .Étiquettes.Description 'ID d'imageObtenez des informations sur l'architecture des conteneurs
Pour inspecter une image distante à partir d'un autre registre, utilisez le Skopeo Inspecter commande. Dans l'exemple ci-dessous, nous inspectons une image Rhel 8 init hébergée sur Docker.
# skopeo inspecter docker: // registre.chapeau rouge.IO / RHEL8-BETA / RHEL-INTInspectez l'image distante du registre docker
Taging Images de conteneur
Comme vous l'avez peut-être noté, les noms d'images sont généralement de nature générique. Par exemple, l'image redis est étiquetée:
enregistrement.chapeau rouge.io / rhscl / redis-5-rhel7
Le marquage des images leur donne un nom plus intuitif pour mieux comprendre ce qu'ils contiennent. En utilisant le étiquette podman Commande, vous pouvez créer une balise d'image qui est essentiellement un alias à un nom d'image qui comprend différentes parties.
Ceux-ci sont:
Registre / nom d'utilisateur / nom: Tag
Par exemple, pour modifier le nom générique de l'image redis qui a un identifiant de 646F2730318C , Nous exécuterons la commande:
# Podman Tag 646f2730318c Myredis
Pour ajouter une balise à la fin, ajoutez un côlon complet suivi du numéro de balise:
# Podman Tag 646f2730318c Myredis: 5.0
Sans ajouter le numéro de balise, il sera simplement attribué à l'attribut.
Définir le nom de Redis Container ImageImages de conteneur en cours d'exécution
Pour exécuter un conteneur, utilisez le Podman Run commande. Par exemple:
# podman run image_id
Pour exécuter un conteneur en silence en arrière-plan en tant que service de démon, utilisez le -d
Option comme indiqué.
# podman run -d image_id
Par exemple, pour exécuter le redis Image avec ID 646F2730318C, Nous invoquerons la commande:
# Podman Run -D 646F2730318CExécuter des images de conteneur Redis
Si vous exécutez un conteneur en fonction d'un système d'exploitation tel que Rhel 8 image de base, vous pouvez accéder au shell en utilisant le -il
directif. Le -je
L'option crée une session interactive tandis que le -t
Proix une session terminale. Le --nom
L'option définit le nom du conteneur sur mybash tandis que c'est le ECBC6F53BBA0 ID d'image de l'image de base.
# podman run -it --name = mybash ecbc6f53bba0
Par la suite, vous pouvez exécuter toutes les commandes de shell. Dans l'exemple ci-dessous, nous vérifions la version OS de l'image de conteneur.
# CAT / ETC / OS-ReleaseVérifiez la version du système d'exploitation de l'image du conteneur
Pour quitter le conteneur, appelez simplement la commande de sortie.
# sortie
Une fois le conteneur qui est sorti, il s'arrête automatiquement. Pour recommencer le conteneur, utilisez le Podman commence commande avec le -IA
Flag comme indiqué.
# podman start -ai mybash
Encore une fois, cela vous donne accès à la coquille.
Démarrer les images du conteneurListing des images de conteneur en cours d'exécution
Pour répertorier les conteneurs en cours d'exécution, utilisez le Podman PS Commande comme indiqué.
# podman psListe des images de conteneur en cours d'exécution
Pour afficher tous les conteneurs, y compris ceux qui sont sortis après l'exécution, utilisez la commande:
# Podman PS -aAfficher toutes les images du conteneur
Configurer des images de conteneur pour démarrer automatiquement sous le service systemd
Dans cette section, nous nous concentrons sur la façon dont un conteneur peut être configuré pour s'exécuter directement sur un système RHEL en tant que service SystemD.
Tout d'abord, obtenez votre image préférée. Dans ce cas, nous avons tiré le Redis Image de Docker Hub:
# podman tire docker.IO / redis
Si vous avez SELINUX en cours d'exécution sur votre système, vous devez activer le contener_manage_cgroup booléen pour faire fonctionner des conteneurs avec systemd.
# setSebool -p contener_manage_cgroup sur
Par la suite, exécutez l'image du conteneur en arrière-plan et affectez-la à votre nom d'image préféré. Dans cet exemple, nous avons nommé notre image redis_server et cartographié le port 6379 du conteneur à notre Rhel 8 héberger
# podman run -d --name redis_server -p 6379: 6379 redisExécutez l'image du conteneur en arrière-plan
Ensuite, nous allons créer un systemd Fichier de configuration de l'unité pour redis dans le / etc / systemd / system / annuaire.
# vim / etc / systemd / system / redis-contrainer.service
Collez le contenu ci-dessous dans le fichier.
[Unité] Description = Redis Container [Service] Restart = Always ExecStart = / USR / bin / podman start -a redis_server execstop = / usr / bin / podman stop -t 2 redis_server [install] wantedby = local.cible
Enregistrer et quitter le fichier.
Ensuite, configurez le conteneur pour démarrer automatiquement sur le démarrage.
# SystemCTL Activer Redis-Container.service
Ensuite, démarrez le conteneur et vérifiez son statut d'exécution.
# systemctl start redis-container.Service # SystemCTL Status Redis-Container.serviceVérifiez l'état de l'image du conteneur
Configurer le stockage persistant pour les images de conteneurs
Lors de l'exécution de conteneurs, il est prudent de configurer un stockage externe persistant sur l'hôte. Cela fournit une sauvegarde au cas où le conteneur se bloque ou est retiré accidentellement.
Pour persister les données, nous allons cartographier un répertoire situé dans l'hôte d'un répertoire à l'intérieur du conteneur.
$ podman run --privigeged -it -v / var / lib / conteneurs / backup_storage: / mnt registre.chapeau rouge.io / ubi8 / ubi / bin / bash
Le --privilégié
L'option est passée lorsque Selinux est défini sur l'application. Le -V
L'option spécifie le volume externe situé sur l'hôte. Le volume de conteneur ici est le / mnt annuaire.
Une fois que nous avons accédé au shell, nous allons créer un exemple de fichier essai.SMS dans le / mnt Répertoire comme indiqué.
$ echo "Cela teste le stockage externe persistant"> / mnt / test.SMS
Nous allons alors sortie le conteneur et vérifiez si le fichier existe dans le stockage externe résidant sur l'hôte
# Exit # Cat / var / lib / conteneurs / backup_storage / test.SMS
Sortir ⇒ Cela teste un stockage externe persistant.
Configurer le stockage persistant pour les conteneursArrêter et retirer les conteneurs
Une fois que vous avez terminé avec l'exécution de votre conteneur, vous pouvez l'arrêter en utilisant le podman arrêt commande suivie par le conteneur-id que vous pouvez obtenir du Podman PS commande.
# Podman Stop Container-IDImage du conteneur d'arrêt
Pour supprimer les conteneurs dont vous n'avez plus besoin, d'abord, assurez-vous de l'arrêter, puis d'invoquez le Podman RM Commande suivie de l'ID de conteneur ou du nom comme option.
# Podman RM Container-ID
Pour supprimer plusieurs conteneurs à une commande GO dans une seule commande, spécifiez le conteneur identifiant séparé par un espace.
# Podman RM Container-ID-1 Container-ID-2 Container-ID-3Supprimer l'image du conteneur
Pour effacer tous vos conteneurs, exécutez la commande:
# podman rm -aEffacer tous les conteneurs
Supprimer une image
Pour supprimer une image, assurez-vous d'abord que tous les conteneurs engendrés des images sont arrêtés et supprimés comme discuté dans le sous-topic précédent.
Ensuite, procédez et exécutez le podman -RMI
Commande suivie de l'ID de l'image comme indiqué:
# podman -rmi image-idSupprimer l'image
Conclusion
Cela conclut ce chapitre sur la gestion et le travail avec des conteneurs Rhel 8. Nous espérons que ce guide a fourni une compréhension décente des conteneurs et comment vous pouvez les interagir et les gérer sur votre Rhel Système utilisant podman et Skopeo.
- « 20 choses à faire après l'installation d'Ubuntu 20.10 'gorille groovy'
- Comment installer oh-my-zsh dans Ubuntu 20.04 »