• 10 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 15/10/2024

Publiez votre image sur Docker Hub

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.

Série d'opérations réalisables avec le registre OCI
Série d'opérations réalisables avec le registre OCI

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é :

Ecran de réussite d'entrée de login
Ecran de réussite d'entrée de login

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
Résultat après avoir pousser l'image sur le Docker Hub
Résultat après avoir poussé l'image sur le Docker Hub

L’image sera alors disponible à quiconque souhaitera la récupérer en exécutant sur sa machine :

docker pull yourusername/libra:latest
Confirmation de la disponibilité de l'image pour n'importe qui
Confirmation de la disponibilité de l'image pour n'importe qui

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

  1. Créez un compte personnel et gratuit sur le registre Docker Hub

  2. Avec la commandedocker login, authentifiez-vous sur celui-ci avec vos identifiants fraîchement créés

  3. Avec la commandedocker tag, renommez votre image de l’application Libra afin qu’elle puisse être déployée sur votre dépôt personnel sur Docker Hub

  4. Publiez l’image avec la commandedocker 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.

Exemple de certificat de réussite
Exemple de certificat de réussite