Comment héberger un registre Docker privé avec Gitlab Registry

Pour éviter de rendre mes images Docker publiques, je voulais un repo privé. J’aurais pu choisir une solution simple et utiliser directement un repository privé sur Docker Hub.

Mais comme j’aime bien autohéberger mes outils, je me suis penché sur une autre solution. En faisant mes recherches, je suis d’abord tombé sur https://hub.docker.com/_/registry, puis je me suis aperçu que GitLab avait déjà une fonctionnalité intégrée de registry pour Docker.

Et comme j’ai déjà un GitLab qui tourne chez moi, je n’ai qu’à activer et configurer cette fonctionnalité.

Cet article détaille mon implémentation de GitLab Container Registry.

Je me suis basé sur la doc de Gitlab registry , la doc d’administration de Gitlab Registry et pendant la mise en place, j’ai vu

ce qui m’a mener à Container registry metadata database puis Enable the metadata database for new Omnibus installations

Pour rappel, mon instance de Gitlab est containerisé avec Docker.

Je me suis basé sur la doc de Gitlab Registry, la doc d’administration de Gitlab Registry et, pendant la mise en place, j’ai vu:

Ce qui m’a mené à Container registry metadata database, puis Enable the metadata database for new Omnibus installations.

Pour rappel, mon instance de GitLab est containerisée avec Docker.

Vérifier l’utilisateur registry

Pour simplifier la mise en place, je vais configurer la connexion à la base PostgreSQL avec l’utilisateur système registry.

Donc, pour ça, je vérifie qu’il existe dans mon container:

puis:

ce qui me donne, entre autre:

registry:x:993:993::/var/opt/gitlab/registry:/bin/sh

Il existe bien, donc c’est bon, je peux passer à la mise en place de la base de données.

Créer la base de données

Toujours dans mon container GitLab, je vais créer la base de données sur le Postgres intégré à l’image Docker de GitLab:

Configurer Gitlab

Je peux maintenant configurer la fonctionnalité de Registry et la connexion à la base de données pour le Registry. Dans mon fichier de configuration GitLab, j’ajoute :

et:

À ce stade, je peux reconfigurer GitLab et redémarrer le service PostgreSQL:

Ce qui me permet ensuite de vérifier que les settings de connexion à la base de données sont bien pris en compte dans le fichier /var/opt/gitlab/postgresql/data/pg_hba.conf

J’ai bien une connexion locale à la base gitlab_registry pour mon utilisateur registry.

Je peux maintenant initialiser la base de données avec:

gitlab-ctl registry-database migrate up

Tests et vérifications

Donc, après avoir exposé le nouveau port de mon container Docker et ouvert le port sur mon routeur (le port 1234 dans ma config), j’ai maintenant un environnement qui devrait fonctionner. Pour tester, je vais push et pull une image.

Créer un jeton d’accès

Je crée d’abord un jeton d’accès (tu peux aussi très bien t’authentifier avec ton mot de passe) :

Puis, en ligne de commande, j’essaie de me connecter à mon registry tout neuf.

Se loguer au Registry GitLab

Ce qui me donne un tant attendu Login Succeeded

Push une image sur le registry GitLab

Maintenant, pour tester, je build une image Docker que j’avais déjà avec:

Et enfin, je la pousse avec :

Pull une image depuis le registry GitLab

Maintenant que mon image est bien sur mon registry privé, c’est le test ultime. Je vais, depuis un autre PC, pull mon image (après bien sûr m’être aussi logué depuis ce nouveau PC) :

Et c’est bon ! Tout fonctionne comme prévu !

Eh bien !! Ça ne paraît peut-être pas, mais c’était une sacrée aventure !! Après avoir tâtonné avec la configuration, je suis enfin arrivé à mes fins.

La prochaine étape pour moi va être de configurer du CI/CD pour que mes projets soient déployés automatiquement.

En tout cas, si tu passes par là, j’espère que ce contenu pourra t’être utile. N’hésite pas à me faire un retour. En attendant, je te dis à bientôt !!

Partagez l'article:
FacebookTwitterEmailLinkedIn

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.