L’un des défis auxquels les développeurs étaient confrontés par le passé consistait à faire en sorte que les applications s’exécutent de manière fiable dans plusieurs environnements informatiques. Souvent, les applications ne fonctionnaient pas comme prévu ou rencontraient des erreurs et échouaient complètement. Et c’est là qu’est né le concept de conteneurs .

Que sont les images de conteneur ?

Les images de conteneur sont des fichiers statiques livrés avec un code exécutable qui s’exécute dans un environnement isolé. Une image de conteneur comprend des bibliothèques système, des dépendances et d’autres paramètres de plate-forme nécessaires à l’exécution de l’application dans divers environnements.

Red Hat Linux fournit un ensemble d’outils de conteneur utiles que vous pouvez exploiter pour travailler directement avec des conteneurs Linux à l’aide de commandes docker requises . Ceux-ci inclus:

  • Podman – Il s’agit d’un moteur de conteneur sans démon pour exécuter et gérer les conteneurs OCI en mode racine ou sans racine. Podman est similaire à Docker et possède les mêmes options de commande, sauf que Docker est un démon. Vous pouvez extraire, exécuter et gérer des images de conteneur à l’aide de podman de la même manière qu’avec Docker . Podman est livré avec de nombreuses fonctionnalités avancées, s’intègre pleinement aux systèmes et offre une prise en charge de l’espace de noms utilisateur qui inclut l’exécution de conteneurs sans avoir besoin d’un utilisateur root.
  • Skopeo : Il s’agit d’un outil en 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 pour copier des images vers un autre registre de conteneurs ou environnement. Outre la copie d’images, vous pouvez l’utiliser pour inspecter des images de divers registres et utiliser des signatures pour créer et vérifier des images.
  • Buildah : Il s’agit d’un ensemble d’outils de ligne de commande utilisés pour créer et gérer des images OCI de conteneur à l’aide de fichiers Docker .

Dans cet article, nous nous concentrerons sur la gestion des conteneurs à l’aide de podman et Skopeo .

Recherche d’images de conteneur à partir d’un registre distant

La commande de recherche podman vous permet de rechercher des images de conteneur dans les registres distants sélectionnés. La liste par défaut des registres est définie dans le fichier registries.conf situé dans le répertoire /etc/containers/ .

Publicité

 

Les registres sont définis par 3 sections.

  • [registries.search] – Cette section spécifie les registres par défaut que podman peut rechercher pour les images de conteneur. Il recherche l’image demandée dans les registres Registry.Access.redhat.com , Registry.redhat.io et Docker.io .
Registres Par Défaut
Registres par défaut
  • [registries.insecure] – Cette section spécifie les registres qui n’implémentent pas le cryptage TLS, c’est-à-dire les registres non sécurisés. Par défaut, aucune entrée n’est spécifiée.
Registres Non Sécurisés
Registres non sécurisés
  • [registries.block] – Cela bloque ou refuse l’accès aux registres spécifiés à partir de votre système local. Par défaut, aucune entrée n’est spécifiée.
Bloque Les Registres
Bloque les registres

En tant qu’utilisateur régulier ( non root ) exécutant la commande podman, vous pouvez définir votre propre fichier registries.conf sur votre répertoire personnel ( $HOME/.config/containers/registries.conf ) 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 les points suivants :

  • Chaque registre doit être entouré de guillemets simples.
  • 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 – soit les ports TCP 443 pour sécurisé et 80 pour non sécurisé, – le numéro de port doit être spécifié à côté du nom du registre, par exemple register.example.com:5566 .

Pour rechercher une image de conteneur dans un registre à l’aide de la syntaxe :

# registre de recherche podman/container_image

Par exemple, pour rechercher une image Redis dans le registre Registry.redhat.io , appelez la commande :

# registre de recherche podman.redhat.io/redis
Rechercher Une Image De Conteneur Dans Le Registre
Rechercher une image de conteneur dans le registre

Pour rechercher une image de conteneur MariaDB , exécutez.

# registre de recherche podman.redhat.io/mariadb
Rechercher Une Image De Conteneur Mariadb
Rechercher une image de conteneur MariaDB

Pour obtenir une description élaborée d’une image de conteneur, utilisez l’ --no-truncoption 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 du conteneur MariaDB comme indiqué :

# recherche podman --no-trunc register.redhat.io/rhel8/mariadb-103
Description De La Liste De L'Image Du Conteneur Mariadb
Description de la liste de l’image du conteneur MariaDB

Extraction d’images de conteneurs

Pour extraire ou récupérer des images de conteneur à partir d’un registre distant, vous devez d’abord vous authentifier avant toute autre chose. Par exemple, pour récupérer l’image du conteneur MariaDB, connectez-vous d’abord au registre Redhat :

# connexion podman

Indiquez votre nom d’utilisateur et votre mot de passe et appuyez sur ‘ ENTER ‘ sur votre clavier. Si tout se passe bien, vous devriez recevoir un message de confirmation indiquant que la connexion au registre a réussi.

Connexion réussie !

Maintenant, vous pouvez extraire l’image en utilisant la syntaxe indiquée :

# podman pull <registry>[:<port>]/[<namespace>/]<name>:<tag>

Le <registry>fait référence à l’hôte ou au registre distant qui fournit un référentiel d’images de conteneurs sur le TCP <port>. Le <namespace>et le <name>spécifient collectivement une image de conteneur basée sur le <namespace>au niveau du registre. Enfin, l’ <tag>option spécifie la version de l’image du conteneur. Si aucune n’est spécifiée, la balise par défaut – latest – est utilisée.

Il est toujours recommandé d’ajouter des registres de confiance, c’est-à-dire ceux qui fournissent un cryptage et ne permettent pas aux utilisateurs anonymes de créer des comptes avec des noms aléatoires.

Pour extraire l’image MariaDB, exécutez la commande :

# podman pull register.redhat.io/rhel8/mariadb-103
  • Le <registry>-registry.redhat.io
  • Le <namespace>– rhel8
  • Le <name>– MariaDB
  • Le <tag>– 103
Extraire L'Image Mariadb
Extraire l’image MariaDB

Pour les extractions d’images de conteneur suivantes, aucune autre connexion n’est requise puisque vous êtes déjà authentifié. Pour extraire une image de conteneur Redis , exécutez simplement :

# podman pull register.redhat.io/rhscl/redis-5-rhel7
Extraire L'Image Du Conteneur Redis
Extraire l’image du conteneur Redis

Liste des images de conteneurs

Une fois que vous avez terminé d’extraire les images, vous pouvez afficher les images existant actuellement sur votre hôte en exécutant la commande podman images.

# images de podman
Répertorier Les Images De Conteneur
Répertorier 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’elle fait. La commande podman inspect imprime une mer de métadonnées sur le conteneur, telles que le système d’exploitation et l’architecture.

Pour inspecter une image, exécutez la commande podman inspect suivie de l’ID de l’image ou du référentiel.

# podman inspect IMAGE ID 
OU 
# podman inspect REPOSITORY

Dans l’exemple ci-dessous, nous inspectons le conteneur MariaDB .

# podman inspecte le registre.redhat.io/rhel8/mariadb-103
Inspecter Les Images Du Conteneur Mariadb
Inspecter les images du conteneur MariaDB

Pour extraire des métadonnées spécifiques pour un conteneur, passez l’ --formatoption suivie des métadonnées et de l’identité du conteneur (ID ou nom de l’image).

Dans l’exemple ci-dessous, nous récupérons des informations sur l’architecture et la description du conteneur de base RHEL 8 qui relève de la section  » Libellés « .

# podman inspect --format='{{.Labels.architecture}}' ID de l'image 
# podman inspect --format='{{.Labels.description}}' ID de l'image
Obtenir Des Informations Sur L'Architecture Des Conteneurs
Obtenir des informations sur l’architecture des conteneurs

Pour inspecter une image distante à partir d’un autre registre, utilisez la commande skopeo inspect . Dans l’exemple ci-dessous, nous inspectons une image init RHEL 8 hébergée sur Docker .

# skopeo inspect docker://registry.redhat.io/rhel8-beta/rhel-init
Inspecter L'Image Distante À Partir Du Registre Docker
Inspecter l’image distante à partir du registre Docker

Balisage des images de conteneurs

Comme vous l’avez peut-être remarqué, les noms d’images sont généralement de nature générique. Par exemple, l’image redis est étiquetée :

registre.redhat.io/rhscl/redis-5-rhel7

Le marquage des images leur donne un nom plus intuitif pour mieux comprendre ce qu’elles contiennent. À l’aide de la commande podman tag , vous pouvez créer une balise d’image qui est essentiellement un alias d’un nom d’image composé de différentes parties.

Ceux-ci sont:

registre/nom d'utilisateur/NOM:tag

Par exemple, pour changer le nom générique de l’image Redis qui a pour ID 646f2730318c , nous allons exécuter la commande :

# balise podman 646f2730318c myredis

Pour ajouter une balise à la fin, ajoutez deux-points complets suivis du numéro de balise :

# balise podman 646f2730318c myredis:5.0

Sans ajouter le numéro de balise, il se verra juste attribuer l’attribut latest.

Définir Le Nom De L'Image Du Conteneur Redis
Définir le nom de l’image du conteneur Redis

Exécution d’images de conteneur

Pour exécuter un conteneur, utilisez la commande podman run . Par exemple:

# podman lance image_id

Pour exécuter un conteneur silencieusement en arrière-plan en tant que service démon, utilisez l’ -doption comme indiqué.

# podman run -d image_id

Par exemple, pour exécuter l’ image redis avec l’ID 646f2730318c , nous invoquerons la commande :

# podman run -d 646f2730318c
Exécuter Des Images De Conteneur Redis
Exécuter des images de conteneur Redis

Si vous exécutez un conteneur basé sur un système d’exploitation tel que l’image de base RHEL 8 , vous pouvez accéder au shell à l’aide de la -itdirective. L’ -ioption crée une session interactive pendant qu’elle -tgénère une session de terminal. L’ --nameoption définit le nom du conteneur sur mybash tandis que correspond à l’ ID d’image ecbc6f53bba0 de l’image de base.

# podman run -it --name=mybash ecbc6f53bba0

Ensuite, vous pouvez exécuter n’importe quelle commande shell. Dans l’exemple ci-dessous, nous vérifions la version du système d’exploitation de l’image du conteneur.

# chat /etc/os-release
Vérifier La Version Du Système D'Exploitation De L'Image Du Conteneur
Vérifier la version du système d’exploitation de l’image du conteneur

Pour quitter le conteneur, invoquez simplement la commande exit.

# sortie

Une fois que le conteneur est sorti, il s’arrête automatiquement. Pour redémarrer le conteneur, utilisez la commande podman start-ai avec l’ indicateur comme indiqué.

# podman start -ai mybash

Encore une fois, cela vous donne accès au shell.

Démarrer Les Images Du Conteneur
Démarrer les images du conteneur

Liste des images de conteneur en cours d’exécution

Pour répertorier les conteneurs en cours d’exécution, utilisez la commande podman ps comme indiqué.

#podman ps
Répertorier Les Images De Conteneur En Cours D'Exécution
Répertorier les images de conteneur en cours d’exécution

Pour afficher tous les conteneurs, y compris ceux qui ont été fermés après l’exécution, utilisez la commande :

# sous-homme ps -a
Voir Toutes Les Images De Conteneur
Voir toutes les images de conteneur

Configurer les 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 extrait l’ image Redis du docker hub :

# podman pull docker.io/redis

Si vous avez SELinux en cours d’exécution sur votre système, vous devez activer le booléen container_manage_cgroup pour exécuter des conteneurs avec systemd .

# setsebool -p container_manage_cgroup sur

Ensuite, exécutez l’image du conteneur en arrière-plan et attribuez-la à votre nom d’image préféré. Dans cet exemple, nous avons nommé notre image redis_server et mappé le port 6379 du conteneur à notre hôte RHEL 8

# podman run -d --name redis_server -p 6379:6379 redis
Exécuter L'Image Du Conteneur En Arrière-Plan
Exécuter l’image du conteneur en arrière-plan

Ensuite, nous allons créer un fichier de configuration d’unité systemd pour redis dans le répertoire /etc/systemd/system/ .

# vim /etc/systemd/system/redis-container.service

Collez le contenu ci-dessous dans le fichier.

[Unité] 
Description=Conteneur Redis 

[Service] 
Restart=always 
ExecStart=/usr/bin/podman start -a redis_server 
ExecStop=/usr/bin/podman stop -t 2 redis_server 

[Install] 
WantedBy=local.target

Enregistrez et quittez le fichier.

Ensuite, configurez le conteneur pour qu’il démarre automatiquement au démarrage.

# systemctl activer redis-container.service

Ensuite, démarrez le conteneur et vérifiez son état d’exécution.

# systemctl start redis-container.service 
# systemctl status redis-container.service
Vérifier L'État De L'Image Du Conteneur
Vérifier l’état de l’image du conteneur

Configurer le stockage persistant pour les images de conteneur

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 tomberait en panne ou serait supprimé accidentellement.

Pour conserver les données, nous allons mapper un répertoire situé dans l’hôte vers un répertoire à l’intérieur du conteneur.

$podman run --privileged -it -v /var/lib/containers/backup_storage:/month register.redhat.io/ubi8/ubi /bin/bash

L’ --privilegedoption est transmise lorsque SELinux est défini sur l’application. L’ -voption spécifie le volume externe qui se trouve sur l’hôte. Le volume du conteneur ici est le répertoire /mnt .

Une fois que nous avons accédé au shell, nous allons créer un exemple de fichier testing.txt dans le répertoire /mnt comme indiqué.

$ echo "Ceci teste le stockage externe persistant" > /mnt/testing.txt

Nous allons ensuite quitter le conteneur et vérifier si le fichier existe dans le stockage externe résidant sur l’hôte

# sortie 
# cat /var/lib/containers/backup_storage/testing.txt

SortieCeci teste le stockage externe persistant .

Configurer Le Stockage Persistant Pour Les Conteneurs
Configurer le stockage persistant pour les conteneurs

Arrêt et retrait des conteneurs

Une fois que vous avez terminé d’exécuter votre conteneur, vous pouvez l’arrêter à l’aide de la commande podman stop suivie de l’ identifiant du conteneur que vous pouvez obtenir à partir de la commande podman ps .

# ID du conteneur d'arrêt du podman
Arrêter L'Image Du Conteneur
Arrêter l’image du conteneur

Pour supprimer les conteneurs dont vous n’avez plus besoin, assurez-vous d’abord de l’arrêter, puis appelez la commande podman rm suivie de l’ID ou du nom du conteneur en option.

# ID de conteneur podman rm

Pour supprimer plusieurs conteneurs à la fois en une seule commande, spécifiez les ID de conteneur séparés par un espace.

# podman rm conteneur-id-1 conteneur-id-2 conteneur-id-3
Supprimer L'Image Du Conteneur
Supprimer l’image du conteneur

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

# sous-homme rm -a
Effacer Tous Les Conteneurs
Effacer tous les conteneurs

Suppression d’une image

Pour supprimer une image, assurez-vous d’abord que tous les conteneurs générés à partir des images sont arrêtés et supprimés, comme indiqué dans la sous-rubrique précédente.

Ensuite, continuez et exécutez la -rmicommande podman suivie de l’ID de l’image comme indiqué :

# podman -rmi id-image
Supprimer L'Image
Supprimer l’image

Conclusion

Ceci conclut ce chapitre sur la gestion et l’utilisation des conteneurs dans RHEL 8 . Nous espérons que ce guide a fourni une bonne compréhension des conteneurs et de la manière dont vous pouvez interagir et les gérer sur votre système RHEL à l’aide de podman et Skopeo .

Rate this post
Publicité
Article précédentHuawei poursuit les États-Unis pour avoir «  bloqué  » les demandes de la loi sur la liberté de l’information
Article suivantComment utiliser Google Pay pour effectuer des achats en magasin à l’aide de votre téléphone Android
Avatar
Violette Laurent est une blogueuse tech nantaise diplômée en communication de masse et douée pour l'écriture. Elle est la rédactrice en chef de fr.techtribune.net. Les sujets de prédilection de Violette sont la technologie et la cryptographie. Elle est également une grande fan d'Anime et de Manga.

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici