Votre plan semble convenir à Liam. La CTO, Sarah, vous transmet les éléments pour accéder à l’environnement de démonstration afin que vous puissiez réaliser la première livraison. Plus qu’une dernière chose à faire avant le grand moment : diffuser votre image sur un registre OCI !
Découvrez les registres OCI
Les registres OCI (Open Container Initiative) sont des dépôts où les images de conteneurs sont stockées et partagées. La spécification OCI définit un ensemble de standards pour la distribution d'images de conteneurs, garantissant ainsi l'interopérabilité entre différents outils et plateformes.
Concrètement, un registre OCI est défini par une API et permet à un client de réaliser les opérations suivantes :
Push : Envoyer une image au registre.
Pull : Télécharger une image du registre.
Tag : Associer des métadonnées supplémentaires à une image pour la versionner.
Delete : Supprimer des images obsolètes ou non nécessaires.
Et on peut manipuler cette API avec autre chose que Docker ?
Oui ! Outre le client Docker, plusieurs autres outils permettent de manipuler les registres OCI. Par exemple, nous pourrions citer :
Skopeo : un utilitaire en ligne de commande pour les opérations d’inspection et de copie d’images de conteneurs.
Crane : Un utilitaire simplifié créé à partir de la librairie Go `google/go-containerregistry`, qui permet d’interagir programmatiquement avec des registres OCI.
De la même manière qu’il existe un grand nombre d’outils permettant d’utiliser les registres OCI, il existe de nombreux projets implémentant ces spécifications. Et nous allons découvrir dès à présent le principal d’entre eux : Docker Hub.
Publiez une image sur le registre Docker Hub
Docker Hub est le registre public par défaut utilisé par Docker. Il permet de stocker et de partager des images de conteneurs avec la communauté ou au sein de votre organisation. Ils offrent les services suivants :
Comptes personnels : Vous pouvez créer un compte gratuit pour publier des images publiques ou souscrire à des plans payants pour des images privées.
Repositories : Les images sont organisées par dépôts, et chaque dépôt peut contenir plusieurs tags d’images.
S’identifier sur le Docker Hub
Pour publier une image sur Docker Hub, vous devez tout d’abord vous authentifier avec votre client. Pour ce faire, tapez la commande :
docker login
Entrez vos identifiants Docker lorsque vous y êtes invité :
Renommer l’image pour cibler votre dépôt Docker Hub
Supposons que vous ayez une image locale nommée libra:latest
. Vous devez la taguer avec votre nom d’utilisateur Docker Hub et le nom du dépôt cible afin de la publier.
docker tag libra:latest yourusername/libra:latest
Pousser l’image sur le Docker Hub
Maintenant que l’image est renommée, vous pouvez la publier sur le Docker Hub avec la commande suivante :
docker push yourusername/libra:latest
L’image sera alors disponible à quiconque souhaitera la récupérer en exécutant sur sa machine :
docker pull yourusername/libra:latest
Et si je ne veux pas que mes images soient disponibles publiquement, je fais quoi ?
Il arrive parfois qu’on travaille sur des projets privés et qu’on ne souhaite pas que notre travail soit disponible au tout-venant. Dans ce cas, plusieurs solutions s’offrent à vous :
Ouvrir un compte payant sur le Docker Hub
Utiliser un autre service implémentant les spécifications OCI et offrant ce type d’utilisation privée. Gitlab par exemple offre ce type de service en accompagnement des projets Git hébergés sur leur plateforme.
Une troisième solution est d’héberger vous-même un registre OCI privé sur votre propre infrastructure, et chanceux que vous êtes, c’est exactement ce que nous allons voir dans la section suivante !
Utilisez un registre privé pour votre organisation
Utiliser un registre privé peut être motivé par plusieurs raisons :
Sécurité : Un registre privé permet d’avoir le contrôle total sur les accès et les permissions d’utilisation, par exemple en association avec votre annuaire d’entreprise. Vous pouvez également intégrer des fonctionnalités avancées comme l’authentification par certificats TLS pour renforcer la sécurité des communications.
Confidentialité : Il vous permet également d’assurer la confidentialité de vos données, par exemple pour des images contenant des informations sensibles ou propriétaires.
Performance : En hébergeant au plus près votre registre OCI de vos infrastructures, vous réduirez automatiquement la latence de récupération des images sur vos différents serveurs.
Autonomie : En déployant un registre dans votre réseau local, vous pouvez rendre indépendant votre infrastructure d’internet et ainsi vous prémunir contre de potentielles coupures de services.
Voyons tout de suite en vidéo comment créer et utiliser un registre privé !
Dans cette vidéo, nous avons vu ensemble :
1/ Comment démarrer un registre privé avec l’image officielle Docker :
docker run -d -p 5000 --name registry registry:2
2/ Comment tagger l’image pour qu’elle pointe vers notre registre privé :
docker tag libra:latest localhost:5000/libra:latest
3/ Comment pousser l’image vers le registre privé :
docker push localhost:5000/libra:latest
4/ Récupérer l’image depuis le registre privé :
docker pull localhost:5000/libra:latest
À vous de jouer
Contexte
Liam, le CEO, a tranché : dans le cadre de cette preuve de concept, le projet Libra utilisera le Docker Hub afin de diffuser l’image Libra. L’entreprise a de toute manière trop d’avance technologique pour être inquiétée par ses concurrents…
Il vous revient de créer le compte Docker Hub afin de diffuser l’image de l’application Libra, dans l’optique qu’elle puisse enfin être déployée sur l’environnement de démonstration !
Consignes
Créez un compte personnel et gratuit sur le registre Docker Hub
Avec la commande
docker login
, authentifiez-vous sur celui-ci avec vos identifiants fraîchement créésAvec la commande
docker tag
, renommez votre image de l’application Libra afin qu’elle puisse être déployée sur votre dépôt personnel sur Docker HubPubliez l’image avec la commande
docker push
Vérifiez votre travail à l’aide de cet exemple de corrigé
# Étape 1 - S’authentifier sur le Docker Hub avec le client Docker docker login # Étape 2 - Renommer l’image Docker de l’application Libra préalablement construite afin de pouvoir la publier sur votre dépôt personnel docker tag libra:latest yourusername/libra:latest # Étape 3 - Publier l’image docker push yourusername/libra:latest
En résumé
Les registres OCI permettent de stocker et partager vos images de conteneurs. Ils sont basés sur des spécifications ouvertes qui permettent à une large communauté de fournir des services autour de ceux-ci.
Docker Hub est le service de registre OCI officiel proposé par Docker, et également le registre par défaut lorsque vous installez Docker sur votre machine.
Le mécanisme des “tagging” des images permet de modifier le registre ciblé lorsque vous souhaitez diffuser vos images de conteneur.
Les registres privés ouvrent des opportunités d’améliorer la sécurité, la confidentialité, la performance et l’autonomie de vos infrastructures conteneurisées à votre organisation.
Dans le chapitre suivant, nous aborderons comment intégrer notre application dans un environnement complexe, incluant ses dépendances.