6.2. Construire un conteneur simple
« vous avez une idée pour une application et vous voulez la conteneuriser.
D’abord, vous avez besoin d’un outil pour construire un conteneur, comme buildah ou docker, et un fichier qui décrit ce qui se passe dans votre conteneur, qui est généralement un Dockerfile.
Ensuite, vous avez besoin d’un emplacement pour pousser l’image du conteneur résultant afin que vous puissiez l’utiliser pour exécuter n’importe où vous voulez qu’elle s’exécute. Cet emplacement est un registre de conteneurs.
Certains exemples de chacun de ces composants sont installés par défaut sur la plupart des systèmes d’exploitation Linux, à l’exception du Dockerfile, que vous fournissez vous-même.
Le diagramme suivant affiche le processus de construction et de poussée d’une image:
Figure 6.1. Créez une application conteneurisée simple et poussez-la vers un registre
Lorsque vous utilisez un ordinateur qui exécute Red Hat Enterprise Linux (RHEL) comme système d’exploitation, le processus de création d’une application conteneurisée nécessite les étapes suivantes:
- Installer des outils de construction de conteneurs: RHEL contient un ensemble d’outils qui incluent podman, buildah et skopeo que vous utilisez pour construire et gérer des conteneurs.
- Créez un Dockerfile pour combiner l’image de base et le logiciel: Les informations sur la construction de votre conteneur vont dans un fichier nommé Dockerfile. Dans ce fichier, vous identifiez l’image de base à partir de laquelle vous créez, les paquets logiciels que vous installez et le logiciel que vous copiez dans le conteneur. De plus, vous identifiez les valeurs de paramètres comme les ports réseau que vous exposez en dehors du conteneur et les volumes que vous montez à l’intérieur du conteneur. Installez votre Dockerfile et le logiciel que vous souhaitez conteneuriser dans un répertoire sur votre système RHEL.
- Exécutez buildah ou docker build: exécutez le buildah build-using-dockerfile ou la commande docker build pour tirer l’image de base choisie vers le système local et créer une image conteneur qui est stockée localement. Il est également possible de construire des images de conteneurs sans Dockerfile en utilisant buildah.
- Balisez et poussez vers un registre: ajoutez une balise à votre nouvelle image de conteneur qui identifie l’emplacement du registre dans lequel vous souhaitez stocker et partager votre conteneur. Ensuite, poussez cette image vers le registre en exécutant la commande podman push ou docker push.
- Tirez et exécutez l’image: À partir de n’importe quel système qui dispose d’un outil client conteneur, tel que podman ou docker, exécutez une commande qui identifie votre nouvelle image. À titre d’exemple, exécutez la commande podman run <image_name> ou docker run <image_name>. Ici <image_name> est le nom de votre nouvelle image de conteneur, qui ressemble à quay.io/myrepo/myapp:lastest. Le registre peut nécessiter des informations d’identification pour pousser et tirer des images.
6.2.1. Les options d’outil de construction de conteneurs Copier lienLien copié sur presse-papiers!
La construction et la gestion de conteneurs avec buildah, podman et skopeo se traduit par des images de conteneurs standard de l’industrie qui incluent des fonctionnalités spécifiquement réglées pour le déploiement de conteneurs dans les environnements OpenShift Dedicated ou autres Kubernetes. Ces outils sont sans démon et peuvent fonctionner sans privilèges root, nécessitant moins de frais généraux pour les exécuter.
La prise en charge de Docker Container Engine en tant que temps d’exécution du conteneur est dépréciée dans Kubernetes 1.20 et sera supprimée dans une version ultérieure. Cependant, les images produites par Docker continueront à fonctionner dans votre cluster avec tous les temps d’exécution, y compris CRI-O. Consultez l’annonce du blog Kubernetes pour plus d’informations.
Lorsque vous exécutez finalement vos conteneurs dans OpenShift Dedicated, vous utilisez le moteur de conteneur CRI-O. CRI-O fonctionne sur chaque machine d’avion de travail et de contrôle dans un cluster dédié OpenShift, mais CRI-O n’est pas encore pris en charge en tant que temps d’exécution autonome en dehors d’OpenShift Dedicated.
6.2.2. Les options d’image de base Copier lienLien copié sur presse-papiers!
L’image de base sur laquelle vous choisissez de construire votre application contient un ensemble de logiciels qui ressemble à un système Linux à votre application. Lorsque vous construisez votre propre image, votre logiciel est placé dans ce système de fichiers et voit ce système de fichiers comme s’il regardait son système d’exploitation. Le choix de cette image de base a un impact majeur sur la sécurité, l’efficacité et la mise à niveau de votre conteneur à l’avenir.
Le Red Hat fournit un nouvel ensemble d’images de base appelées Red Hat Universal Base Images (UBI). Ces images sont basées sur Red Hat Enterprise Linux et sont similaires aux images de base offertes par Red Hat dans le passé, avec une différence majeure : elles sont librement redistribuables sans abonnement Red Hat. En conséquence, vous pouvez construire votre application sur des images UBI sans avoir à vous soucier de la façon dont elles sont partagées ou de la nécessité de créer différentes images pour différents environnements.
Ces images UBI ont des versions standard, init et minimales. Il est également possible d’utiliser les images Red Hat Software Collections comme base pour les applications qui s’appuient sur des environnements d’exécution spécifiques tels que Node.js, Perl ou Python. Les versions spéciales de certaines de ces images de base d’exécution sont appelées images Source-à-Image (S2I). Avec les images S2I, vous pouvez insérer votre code dans un environnement d’image de base prêt à exécuter ce code.
Les images S2I sont disponibles pour vous à utiliser directement à partir de l’interface Web dédiée OpenShift. Dans la perspective Développeur, accédez à la vue +Ajouter et dans la tuile du catalogue des développeurs, visualisez tous les services disponibles dans le catalogue des développeurs.
Figure 6.2. Choisissez des images de base S2I pour les applications qui ont besoin d’exécutions spécifiques
6.2.3. Les options de registre Copier lienLien copié sur presse-papiers!
Les registres de conteneurs sont l’endroit où vous stockez des images de conteneurs afin que vous puissiez les partager avec d’autres et les mettre à la disposition de la plate-forme où ils finissent par fonctionner. Il est possible de sélectionner de grands registres de conteneurs publics qui offrent des comptes gratuits ou une version premium offrant plus de stockage et de fonctionnalités spéciales. En outre, vous pouvez installer votre propre registre qui peut être exclusif à votre organisation ou partagé de manière sélective avec d’autres personnes.
Afin d’obtenir des images Red Hat et des images de partenaires certifiés, vous pouvez tirer du Registre Red Hat. Le Registre Red Hat est représenté par deux emplacements: Registry.access.redhat.com, qui n’est pas authentifié et déprécié, et Registry.redhat.io, qui nécessite une authentification. En savoir plus sur les images Red Hat et les images partenaires dans le Registre Red Hat à partir de la section Images Container du catalogue de l’écosystème Red Hat. En plus de la liste des images de conteneurs Red Hat, il montre également des informations détaillées sur le contenu et la qualité de ces images, y compris les scores de santé basés sur les mises à jour de sécurité appliquées.
Les grands registres publics comprennent Docker Hub et Quay.io. Le registre Quay.io est détenu et géré par Red Hat. De nombreux composants utilisés dans OpenShift Dedicated sont stockés dans Quay.io, y compris les images de conteneurs et les opérateurs qui sont utilisés pour déployer OpenShift Dedicated lui-même. Le Quay.io offre également les moyens de stocker d’autres types de contenu, y compris les graphiques Helm.
Dans le cas où vous voulez votre propre registre de conteneurs privé, OpenShift Dedicated comprend un registre de conteneurs privé qui est installé avec OpenShift Dedicated et fonctionne sur son cluster. Le Red Hat propose également une version privée du registre Quay.io appelé Red Hat Quay. Le Red Hat Quay inclut la réplication géographique, les déclencheurs Git build, le balayage d’image clair et de nombreuses autres fonctionnalités.
L’ensemble des registres mentionnés ici peut nécessiter des informations d’identification pour télécharger des images à partir de ces registres. Certaines de ces informations d’identification sont présentées à l’échelle du cluster à partir d’OpenShift Dedicated, tandis que d’autres informations d’identification peuvent être attribuées à des individus.