7.2. Construction d'un conteneur simple
Vous avez une idée d'application et vous voulez la conteneuriser.
Tout d'abord, vous avez besoin d'un outil pour construire un conteneur, comme buildah ou docker, et d'un fichier qui décrit ce qui va dans votre conteneur, qui est typiquement un Dockerfile.
Ensuite, vous avez besoin d'un emplacement pour pousser l'image de conteneur résultante afin que vous puissiez l'extraire pour qu'elle s'exécute là où vous le souhaitez. 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 fichier Dockerfile, que vous fournissez vous-même.
Le diagramme suivant illustre le processus de construction et de poussée d'une image :
Figure 7.1. Créer une application conteneurisée simple et la pousser vers un registre
Si vous utilisez un ordinateur dont le système d'exploitation est Red Hat Enterprise Linux (RHEL), le processus de création d'une application conteneurisée nécessite les étapes suivantes :
- Installer les outils de construction de conteneurs : RHEL contient un ensemble d'outils, dont podman, buildah et skopeo, que vous utilisez pour construire et gérer des conteneurs.
-
Créer un fichier Docker pour combiner l'image de base et les logiciels : Les informations relatives à la construction de votre conteneur sont consignées dans un fichier nommé
Dockerfile
. Dans ce fichier, vous identifiez l'image de base à partir de laquelle vous construisez votre conteneur, les logiciels que vous installez et ceux que vous copiez dans le conteneur. Vous identifiez également les valeurs des paramètres tels que les ports réseau que vous exposez à l'extérieur du conteneur et les volumes que vous montez à l'intérieur du conteneur. Placez votre fichier Docker et le logiciel que vous souhaitez conteneuriser dans un répertoire de votre système RHEL. -
Exécutez buildah ou docker build : Exécutez la commande
buildah build-using-dockerfile
oudocker build
pour extraire l'image de base que vous avez choisie vers le système local et créer une image de conteneur qui est stockée localement. Vous pouvez également créer des images de conteneurs sans fichier Docker en utilisant buildah. -
Marquer et pousser 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. Poussez ensuite cette image vers le registre en exécutant la commande
podman push
oudocker push
. -
Extrayez et exécutez l'image : À partir de n'importe quel système doté d'un outil client de conteneur, tel que podman ou docker, exécutez une commande qui identifie votre nouvelle image. Par exemple, exécutez la commande
podman run <image_name>
oudocker run <image_name>
. Ici,<image_name>
est le nom de votre nouvelle image de conteneur, qui ressemble àquay.io/myrepo/myapp:latest
. Le registre peut exiger des informations d'identification pour pousser et tirer des images.
Pour plus de détails sur le processus de construction d'images de conteneurs, leur transfert dans les registres et leur exécution, voir Constructions d'images personnalisées avec Buildah.
7.2.1. Options de l'outil de construction de conteneurs
La construction et la gestion de conteneurs avec buildah, podman et skopeo permettent d'obtenir des images de conteneurs standard qui incluent des fonctionnalités spécifiquement adaptées au déploiement de conteneurs dans OpenShift Container Platform ou d'autres environnements Kubernetes. Ces outils sont sans démon et peuvent s'exécuter sans privilèges root, ce qui nécessite moins de frais généraux pour les faire fonctionner.
La prise en charge de Docker Container Engine en tant que moteur d'exécution de conteneur est obsolète dans Kubernetes 1.20 et sera supprimée dans une prochaine version. Cependant, les images produites par Docker continueront à fonctionner dans votre cluster avec tous les runtimes, y compris CRI-O. Pour plus d'informations, consultez l'annonce du blog Kubernetes.
Lorsque vous exécutez vos conteneurs dans OpenShift Container Platform, vous utilisez le moteur de conteneur CRI-O. CRI-O s'exécute sur chaque machine worker et control plane dans un cluster OpenShift Container Platform, mais CRI-O n'est pas encore supporté en tant que runtime autonome en dehors d'OpenShift Container Platform.
7.2.2. Options de l'image de base
L'image de base sur laquelle vous choisissez de construire votre application contient un ensemble de logiciels qui ressemble à un système Linux pour votre application. Lorsque vous créez 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 l'évolutivité de votre conteneur à l'avenir.
Red Hat propose 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 que Red Hat a proposées par le passé, avec une différence majeure : elles sont librement redistribuables sans abonnement à Red Hat. Par conséquent, vous pouvez développer votre application sur des images UBI sans avoir à vous soucier de la manière dont elles sont partagées ou de la nécessité de créer des images différentes pour des environnements différents.
Ces images UBI ont des versions standard, init et minimale. Vous pouvez également utiliser les images de Red Hat Software Collections comme base pour les applications qui reposent sur des environnements d'exécution spécifiques tels que Node.js, Perl ou Python. Des versions spéciales de certaines de ces images de base d'exécution sont appelées images Source-to-Image (S2I). Avec les images S2I, vous pouvez insérer votre code dans un environnement d'image de base prêt à l'exécuter.
Les images S2I sont disponibles pour être utilisées directement depuis l'interface web d'OpenShift Container Platform en sélectionnant Catalog
Figure 7.2. Choisir des images de base S2I pour les applications nécessitant des runtimes spécifiques
7.2.3. Options du registre
Les registres de conteneurs sont l'endroit où vous stockez les images de conteneurs afin de les partager avec d'autres et de les mettre à la disposition de la plateforme sur laquelle elles sont exécutées. Vous pouvez sélectionner de grands registres de conteneurs publics qui proposent des comptes gratuits ou une version premium offrant davantage de stockage et de fonctionnalités spéciales. Vous pouvez également installer votre propre registre qui peut être exclusif à votre organisation ou partagé sélectivement avec d'autres.
Pour obtenir des images Red Hat et des images de partenaires certifiés, vous pouvez puiser dans le Red Hat Registry. Le Red Hat Registry est représenté par deux emplacements : registry.access.redhat.com
red Hat Registry, qui n'est pas authentifié et qui est obsolète, et registry.redhat.io
, qui nécessite une authentification. Vous pouvez en savoir plus sur les images Red Hat et les images des partenaires dans le Red Hat Registry à partir de la section Images de conteneurs du catalogue de l'écosystème Red Hat. En plus de répertorier les images de conteneurs Red Hat, le catalogue présente également des informations détaillées sur le contenu et la qualité de ces images, y compris des 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 Container Platform sont stockés dans Quay.io, notamment les images de conteneurs et les opérateurs utilisés pour déployer OpenShift Container Platform elle-même. Quay.io permet également de stocker d'autres types de contenu, notamment les graphiques Helm.
Si vous souhaitez disposer de votre propre registre de conteneurs, OpenShift Container Platform inclut un registre de conteneurs privé qui est installé avec OpenShift Container Platform et fonctionne sur son cluster. Red Hat propose également une version privée du registre Quay.io appelée Red Hat Quay. Red Hat Quay comprend la réplication géographique, les déclencheurs de construction Git, l'analyse d'images Clair et de nombreuses autres fonctionnalités.
Tous les registres mentionnés ici peuvent exiger des informations d'identification pour télécharger des images à partir de ces registres. Certains de ces identifiants sont présentés à l'échelle du cluster par OpenShift Container Platform, tandis que d'autres peuvent être attribués à des individus.