Comment gérer les conteneurs à l'aide de Podman et Skopeo dans Rhel 8

Comment gérer les conteneurs à l'aide de Podman et Skopeo dans Rhel 8

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.
Registries par défaut
  • [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.
Registries sans sécurité
  • [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.
Bloque les registres

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 / redis 
Rechercher le registre de l'image du conteneur

Pour rechercher un Mariadb Running d'image de conteneur.

# Podman Search Registry.chapeau rouge.IO / MARIADB 
Recherchez 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-103 
Liste 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
Tirez l'image MariaDB

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-rhel7 
Image 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-103 
Inspection 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'image 
Obtenez 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-INT 
Inspectez 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 Image

Images 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 646F2730318C 
Exé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-Release 
Vé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 conteneur

Listing 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 ps 
Liste 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 -a 
Afficher 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 redis 
Exé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.service 
Vé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 

SortirCela teste un stockage externe persistant.

Configurer le stockage persistant pour les conteneurs

Arrê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-ID 
Image 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-3 
Supprimer l'image du conteneur

Pour effacer tous vos conteneurs, exécutez la commande:

# podman rm -a 
Effacer 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-id 
Supprimer 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.