9. Partager son image dans une Registry - Docker

Maintenant que vous savez construire des images Docker de manière optimisée, il est temps de partager votre image Docker dans une registry.

Les Registrys

A la manière d'un repository de paquets debian par exemple, Docker dispose de son propre système de partage et de stockage d'images Docker. La registry publique stockant les images Docker officielles étant le Docker Hub et est accessible ici :

Docker

C'est dans cette registry que nous avons récupéré l'image Python officielle.

Lorsque vous lancez la commande docker pull suivie du nom de l'image, comme par exemple python, Docker va automatiquement essayer de récupérer l'image sur le Docker Hub.

Le fonctionnement est identique pour la commande docker login qui va essayer de se connecter au Docker Hub.

Il est possible d'auto-héberger sa propre registry, avec notamment le projet open source Harbor qui est disponible ici :

Harbor
Our mission is to be the trusted cloud native repository for Kubernetes

Il est également possible de rechercher une image Docker en ligne de commande comme ceci :

docker search NOM DE L'IMAGE

Le tag

Partons du principe que vous avez un compte sur le Docker Hub et que vous avez crée un repository, nous allons voir comment publier une image sur une registry. Cet exemple vaut pour n'importe quelle registry.

Toujours avec notre image Python contenant le module requests, nous l'avons construite précédemment, et est stockée uniquement en local.

Pour la publier dans une registry, il faut d'abord la tagger avec la commande docker tag comme ceci :

docker tag <nom de l'image>:<tag> <nom d'user de la registry>/<repo>:<tag>

Cette commande va venir attribuer un tag à l'image.

Le push

Maintenant que l'image possède un tag, il suffit de la publier avec la commande docker push.

🖐️
Il faut normalement s'authentifier auprès de la registry avec la commade docker login mais par défaut, Docker va essayer de s'authentifier auprès du Docker Hub si vous ne spécifiez pas le nom de domaine de votre registry privée.

docker push <nom de l'image>/<repo>:<tag>

Il est très important de maîtriser ces notions car lorsque vous construisez des images Docker répondant à vos propres standards, il arrive souvent d'avoir plusieurs versions.
Il est donc impératif de maîtriser les tags, et d'avoir dans la plupart des cas, un tag latest de son image.

Nous allons voir dans le prochain cours comment orchestrer ses conteneurs avec l'outil Docker Compose.