Si vous ne savez pas ce qu'est un registre de conteneurs, ne vous inquiétez pas. Cela deviendra clair une fois que vous aurez réellement poussé votre première image de conteneur dans une instance GitLab. Pour l'instant, considérez-les comme des référentiels pour vos images de conteneurs. Ce ne sont pas des conteneurs en cours d'exécution mais juste des images (données simples) se trouvant dans l'instance GitLab distante.
Pourquoi voudriez-vous un registre de conteneurs GitLab?
Il y a de fortes chances que votre application soit packagée sous forme d'une seule image Docker ou d'une collection de telles images. Cela signifie que différentes versions seront associées à différentes images et le registre de conteneurs vous aidera à les suivre individuellement et à voir lesquelles doivent être regroupées dans une version particulière.
Le registre est aux conteneurs, ce que le référentiel est au code source et GitLab est un endroit pour les gérer tous.
Conditions préalables
- Une instance GitLab fonctionnelle sur HTTPS
- Accès root à l'instance
- Accès pour modifier les enregistrements DNS de votre nom de domaine
Nous allons supposer que notre GitLab fonctionne sur gitlab.Exemple.com .
Registre des certificats DNS et TLS
Vous devez être l'utilisateur root pour activer la fonctionnalité de registre de conteneurs sur l'instance GitLab. Les utilisateurs individuels peuvent ensuite choisir d'utiliser cette fonctionnalité dans leurs projets respectifs, s'ils le souhaitent. Il y a deux façons de le faire :
- Réutilisez le nom de domaine et les certificats TLS existants pour gitlab.Exemple.com et exécutez le registre sur un autre port.
- Pointez un autre nom de domaine, disons, enregistrement.gitlab.Exemple.com à la même adresse IP où GitLab s'exécute et y configurer le registre.
Allons-y avec la deuxième option car elle est beaucoup plus professionnelle.
Étape 1: Ajouter un enregistrement A pour enregistrement.gitlab.Exemple.com pointant vers la même IP où votre instance GitLab s'exécute.
Étape 2: Arrêtez les services gitlab en cours d'exécution sur votre serveur.
$ sudo gitlab-ctl stopÉtape 3: Ajouter un client ACME certbot PPA sur votre système et installez certbot.
$ sudo add-apt-repository ppa:certbot/certbot$ sudo apt mise à jour
$ sudo apt installer certbot
Étape 4: Obtenir des certificats de Let's Encrypt.
$ certbot certonlyVous verrez un message comme :
"'
Comment souhaitez-vous vous authentifier auprès de l'ACME CA?
--
1 : Lancer un serveur Web temporaire (autonome)
2: Placer les fichiers dans le répertoire webroot (webroot)
--
Sélectionnez le numéro approprié [1-2] puis [enter] (appuyez sur 'c' pour annuler): 1
"'
Celui-ci vous demandera ensuite votre e-mail, vous demandera d'accepter leurs conditions d'utilisation et, surtout, vous demandera votre nom de domaine qui serait enregistrement.gitlab.Exemple.com dans notre cas d'exemple. Vous recevrez un message indiquant si les certificats ont été obtenus ou non. S'ils l'étaient, passez à l'étape 5
Étape 5 : Maintenant que nous avons nos certificats, il est temps de les placer dans les répertoires liés à GitLab.
$ cp /etc/letsencrypt/live/registry.gitlab.Exemple.com/chaîne complète.pem/etc/gitlab/ssl/registry.gitlab.Exemple.crt
$ cp /etc/letsencrypt/live/registry.gitlab.Exemple.com/privkey.pem
/etc/gitlab/ssl/registry.gitlab.Exemple.clé
Sécurisez les autorisations sur eux :
$ chmod 600 /etc/gitlab/ssl/registry.gitlab.Exemple.com.*Comme le reste du tutoriel, assurez-vous de remplacer example.com avec votre nom de domaine existant. Puisque c'est ce que sera le nom du répertoire, où certbot a stocké le certificat.
Étape 6 : Modifier la configuration de GitLab. Ouvrir le fichier /etc/gitlab/gitlab.rb et ajoutez les lignes suivantes au bas de celui-ci :
Registry_external_url 'https://registry.gitlab.Exemple.viensSi vous avez tout fait avec soin, la partie la plus compliquée de la configuration est terminée! Vous aurez maintenant un registre de conteneurs opérationnel, exécutez simplement :
$ sudo gitlab-ctl reconfigurer$ sudo gitlab-ctl start
Activation du registre et transfert d'images
Maintenant que nous avons pour nous-mêmes un registre de conteneurs, créons un nouveau projet à l'aide de l'interface utilisateur Web GitLab et vérifions qu'il fonctionne.
Dans la colonne de gauche, vous pouvez voir une section Registre. Vous pouvez cliquer dessus pour voir des instructions détaillées sur la façon de vous connecter et d'y envoyer des images. Revenons à notre bureau local, sur lequel Docker devrait être installé.
Nous pouvons l'utiliser pour créer un simple conteneur hello-world et le pousser vers ce registre. Dans votre système local, créez un nouveau dossier :
$ cd ~$ mkdir sample_container
À l'intérieur, créons un fichier nommé Dockerfile et ajoutez-y le contenu suivant :
DE Ubuntu:dernier## Vos commandes personnalisées ici
Vous pouvez conserver votre Dockerfile avec juste la première ligne. Ce sera un simple conteneur Ubuntu. Maintenant, vous le construisez avec une balise significative (nous utiliserons la balise mon projet qui est le même que le nom de notre projet GitLab, c'est important). Dans le même répertoire, exécutez :
$ docker build -t registre.gitlab.Exemple.com/N'oubliez pas de remplacer votre nom d'utilisateur GitLab au lieu du
Il crée simplement un conteneur Ubuntu avec la récupération de l'image. Cette image est ce qui est poussé. Si vous modifiez le conteneur et créez une nouvelle image avec (en utilisant docker commit commande ce sera une nouvelle image). Poussons l'image ubuntu vanille dans notre registre.
Nous devons d'abord nous connecter en utilisant notre nom d'utilisateur et notre mot de passe Gitlab :
$ registre de connexion docker.gitlab.Exemple.comExécutez ensuite :
$ docker build -t registre.gitlab.Exemple.com/root/mon-projet .$ docker push registre.gitlab.Exemple.com/root/mon-projet
Si vous n'êtes pas sûr de ce que devrait être la balise de votre conteneur, visitez la page de registre de votre projet et il y aura des instructions claires pour cela. Si la commande docker push a fonctionné correctement, vous pouvez voir une nouvelle image docker être téléchargée (ou poussée) dans votre instance GitLab. Comme cela a été montré dans mon cas:
Conclusion
Le contrôle de version est bien plus qu'une simple gestion de code source. Il s'améliore constamment pour répondre à un éventail polyvalent de demandes dont tout projet logiciel peut avoir besoin de manière inattendue. Le registre des conteneurs n'est que la pointe de l'iceberg. Vous pouvez avoir des pipelines CD/CI, une gestion de configuration avancée, une autorisation via des jetons et une multitude d'autres fonctionnalités activées dans GitLab. J'espère que vous avez appris quelque chose de nouveau sur cette merveilleuse technologie dans ce tutoriel.
Faites-nous savoir s'il y a quelque chose que vous voulez que nous couvrons!