Docker registry
Docker registry

07 Docker registry : un registre Docker privé

Stockage initial des images

Nous créons des images et les stockons sur notre propre ordinateur. À mesure que nos projets se développent, nous utiliserons un Docker registry pour partager ces images personnalisées. La première idée qui nous vient souvent à l’esprit est de les stocker sur une plateforme publique, comme Docker Hub.

Limitations de Docker Hub gratuit

Néanmoins, il est important de noter que la version gratuite de Docker Hub présente certaines limitations. La capacité totale de stockage peut être restreinte, ce qui constitue une des principales limitations. Pour des projets de petite envergure, cette limite peut être suffisante. Cependant, pour des projets plus importants ou des équipes de développement collaboratives, cette capacité limitée peut rapidement devenir un obstacle. De plus, la version gratuite peut également imposer des restrictions de bande passante, de vitesse de téléchargement et de stockage. Ces restrictions peuvent affecter la rapidité avec laquelle vous pouvez distribuer vos images.

Création d’un registre Docker privé

Pour les projets nécessitant un espace de stockage plus important, il peut être judicieux de créer un registre Docker privé. Cette option offrira un contrôle total sur l’espace de stockage, la bande passante et la vitesse.

Sécurité et confidentialité

Lorsque nous utilisons Docker Hub en version gratuite, les images sont par défaut publiques. Toute personne connaissant le nom de référence de notre image peut y accéder et la télécharger. Cette caractéristique avantage les projets open source ou les collaborations publiques. Cependant, pour les projets sensibles ou privés, elle pose des problèmes de sécurité ou de confidentialité. Nous devons donc prendre en compte cette caractéristique publique lors du choix de l’outil pour héberger nos images Docker.

Options pour la confidentialité

Si la confidentialité est une préoccupation, nous devrions passer à un abonnement payant sur Docker Hub. Une autre option est de créer notre propre Docker Hub, appelé un Registry local. Pour certains projets, créer notre propre registre Docker privé est la meilleure solution pour avoir un contrôle total.

Mise en place d’un conteneur privé local

Dans ce ce chapitre, nous allons explorer le processus d’installation d’un registre Docker privé. Notons que cet outil était autrefois appelé « Docker Registry », a été renommé en « Docker Distribution » dans sa version 2.

Téléchargerons l’image depuis le portail Docker hub.

[root@docker ~]# docker pull registry

Ensuite, créerons ensuite un répertoire sur notre machine local pour y stocker les images.

[root@docker ~]# mkdir -p /var/lib/registry

Maintenant, nous pouvons démarrer notre instance docker-registry

[root@docker ~]# docker run -d -p 5000:5000 --restart=always --name registry -v /var/lib/registry:/var/lib/registry registry:latest

Ajout dimage dans Docker registry local

Nous allons ensuite peupler ce registre en y envoyant nos images que nous avons créé précédemment. Il nous faudra modifier le « tag » puis pousser l’image vers notre registre.

[root@docker ~]# docker tag srv_web_php8 localhost:5000/srv_web_php8 
[root@docker ~]# docker push localhost:5000/srv_web_php8

En nous rendant dans le catalogue de notre registre, nous pouvons remarquer que nous voyons notre image.

[root@docker ~]# curl http://localhost:5000/v2/_catalog
Afficher le cataloque des image Docker

Nous suivrons la même approche pour les images « reverse-proxy » et « srv_web_php7 ». Tout d’abord, nous allons modifier le tag de ces images :

[root@docker ~]# docker tag srv_web_php7 localhost:5000/srv_web_php7
[root@docker ~]# docker tag reverse-proxy localhost:5000/reverse_proxy

Ensuite, nous allons les téléverser vers notre registry local :

[root@docker ~]# docker push localhost:5000/srv_web_php7
[root@docker ~]# docker push localhost:5000/reverse_proxy

De cette manière, notre catalogue d’images dans le registry local s’enrichira avec ces nouvelles images. Le déplacement d’une image vers un autre dépôt n’entraîne pas la suppression de l’image d’origine. En réalité, l’attribution d’un tag à une image n’est qu’un alias. Cela devient évident lorsque nous examinons notre liste d’images en filtrant :

  • par la chaîne de caractères « srv » pour nos images « srv_web_php7 » et « srv_web_php8 »,
  • par « reverse» pour notre image « reverse-proxy ».
[root@docker ~]# docker images --format {{.Repository}} | grep -E 'srv|reverse'
lister nos images

Nous supprimerons les images que nous avons transférer dans notre repository local.

[root@docker ~]# docker rmi reverse-proxy srv_web_php8 srv_web_php7
Lister nos images dans notre Docker registry

Ajouter le Docker registry en utilisant Portainer

Nous ajouterons notre Docker registry dans Portainer, après nous être connecter, nous sélectionnerons dans le menu latéral gauche « Registries ».

Ajouter notre Docker registry phase 1

Nous cliquerons ensuite sur le bouton « Add registry ».

Ajouter notre Docker registry phase 2

Dans la page d’ajout de registry, nous sélectionnerons « Custom Registry », puis dans le formulaire en dessous, nous indiquerons un nom, puis l’adresse de notre registry, dans notre contexte, Portainer et notre registry sont installés sur la même machine, nous indiquerons donc notre adresse IP localhost avant de cliquer sur le bouton « Add Registry ».

Ajouter notre Docker registry phase 3

De retour sur notre pages « Regestries », notre Docker registry est maintenant listé et donc ajouté.

Pour conclure cette partie, rappelons qu’un registry permet de centraliser les images de conteneurs dans un seul emplacement, ce qui facilite la gestion et le partage des images entre les équipes. Un registre Docker peut également être utilisé pour améliorer la sécurité et les performances des applications conteneurisées.