GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment configurer le registre Docker privé sur Ubuntu 20.04

Pour un développement CI/CD fluide à l'aide de la plate-forme Docker, envisagez d'utiliser un serveur de registre Docker auto-hébergé. Le registre Docker est le référentiel dans lequel vous pouvez stocker vos images Docker et les extraire pour exécuter des applications sur le serveur. Pour une livraison plus rapide ainsi qu'une infrastructure sécurisée, il est recommandé de configurer votre propre registre privé Docker pour stocker vos images Docker et les distribuer entre les organisations. Dans cet article, nous allons apprendre à configurer le registre Docker privé sur Ubuntu 20.04

Prérequis

  • Compte utilisateur avec privilèges sudo
  • Un serveur pour le registre Docker
  • Nginx sur le serveur Docker Registry
  • Un serveur client
  • Docker et Docker-Compose sur les deux serveurs.

Registre Docker privé

Docker Registry est une application côté serveur qui vous permet de stocker vos images Docker localement dans un emplacement centralisé. En configurant votre propre serveur de registre Docker, vous pouvez extraire et envoyer des images Docker sans avoir à vous connecter au hub Docker, économisant ainsi votre bande passante et vous protégeant des menaces de sécurité.

Lire aussi  :Comment installer et utiliser Docker sur Ubuntu 20.04 / 20.10

Avant de commencer

Avant de commencer, je m'assure que vous avez installé Docker et Docker-Compose sur le serveur client et le serveur de registre local. Pour vérifier que vous avez installé le logiciel requis, vous pouvez exécuter les commandes suivantes pour vérifier la version du logiciel.

Version $ docker

$ version docker-compose

En outre, vous devez vous assurer que le service Docker est démarré et configuré pour s'activer au démarrage :

$ sudo systemctl start docker$ sudo systemctl enable docker

Installer et configurer le registre Docker privé

Pour configurer Private Docker Registry, suivez les étapes :

Créer des répertoires de registre

Configurez votre serveur qui va héberger un registre privé. Créez un nouveau répertoire qui stockera tous les fichiers de configuration requis.

Utilisez la commande suivante pour créer un nouveau répertoire de projet « my-registry » et deux sous-répertoires « nginx » et « auth ». Vous pouvez avoir votre propre hypothèse pour le nom du projet.

$ mkdir -p mon-registre/{nginx, auth}

Accédez maintenant au répertoire du projet et créez de nouveaux répertoires dans nginx en tant que :

$ cd mon-registre/$ mkdir -p nginx/{conf.d/, ssl}

Créer un script et des services Docker-Compose

Vous devez créer un nouveau script docker-compose.yml qui définit la version de docker-compose et les services requis pour configurer un registre privé.

Créez un nouveau fichier "docker-compose.yml" dans le répertoire "my-registry" avec l'éditeur vi.

$ vi docker-compose.yml

Définissez votre service dans le fichier docker-compose comme :

 SERVICES:# Registre de registre:Image:Redémarrage:2 Redémarrage:Toujours Ports:- "5000:5000" Environnement:Registry_Auth:HTPASSWD Registry_auth_htpasswd_realm:Registry-Registry_auth_htpasswd_Path:/Auth/registry.Passwd registry_storage_filesystem_rootdirectory:/ Volumes de données:- myregistrydata:/data      - ./auth:/auth    réseaux :      - mynet#Nginx Service  nginx :    image :nginx:alpine    container_name :nginx    restart :until-stopped    tty:true    ports :      - "80:80"      - "443:443" volumes :      - ./nginx/conf.d/:/etc/nginx/conf.d/      - ./nginx/ssl/:/etc/nginx/ssl/    réseaux :      - mynet#Docker Networksnetworks :  mynet :    pilote :bridge# Volumesvolumes :  myregistrydata :    pilote :local

Enregistrez et fermez le fichier

Configurer le transfert de port nginx

Nous devons créer une configuration d'hôte virtuel nginx pour le service Web nginx. Accédez au répertoire nginx/conf.d/ créé à l'étape ci-dessus.

$ cd nginx/conf.d/

Créez maintenant un fichier d'hôte virtuel nginx avec votre éditeur de texte. Dans cet exemple, je vais le nommer myregistry.conf. Vous pouvez avoir votre propre hypothèse.

$ vi monregistre.conf

Ajoutez le contenu suivant :

docker-registry en amont {    serveur registre :5000 ;}serveur {    écouter 80 ; nom_serveur registre.linuxtechi.com ; renvoie 301 https://registry.linuxtechi.com$request_uri;}serveur {    écoute 443 ssl http2 ; nom_serveur registre.linuxtechi.com ; certificat_ssl /etc/nginx/ssl/certificate.crt ; clé_certificat_ssl /etc/nginx/ssl/private.key ; # Fichiers journaux pour le débogage    error_log  /var/log/nginx/error.log ; access_log /var/log/nginx/access.log ; emplacement / {        si ($http_user_agent ~ "^(docker\/1\.(3|4|5(?!\.[0-9]-dev))|Go ).*$" )  {            renvoie 404 ; }        proxy_pass                          http://docker-registry ; proxy_set_header  Hôte              $http_host ; proxy_set_header  X-Real-IP         $remote_addr ; proxy_set_header  X-Forwarded-For   $proxy_add_x_forwarded_for ; proxy_set_header  X-Forwarded-Proto $scheme ; proxy_read_timeout                  900 ; }}

Remplacez votre nom de domaine par le paramètre server_name et enregistrez le fichier.

Augmenter la taille de téléchargement du fichier nginx

Par défaut, nginx a une limite de 1 Mo pour télécharger des fichiers. Comme les images docker dépassent cette limite, vous devez augmenter la taille de téléchargement dans le fichier de configuration nginx. Dans cet exemple, je vais créer un fichier de configuration nginx supplémentaire avec une limite de téléchargement de 2 Go .

Allez dans le répertoire de configuration de nginx

$ cd myregistry/nginx/conf.d$ vi additional.conf

Ajoutez la ligne suivante et enregistrez le fichier

client_max_body_size 2G ;

Configurer le certificat SSL et l'authentification

Après avoir créé le fichier de configuration nginx, nous devons maintenant configurer un certificat ssl . Vous devez avoir un fichier de certificat SSL valide avec une clé privée. Copiez votre fichier de certificat et votre clé privée dans le répertoire nginx/ssl sous :

$ cd myregistry/nginx/ssl$ cp /your-ssl-certificate-path/certificate.crt .$ cp /your-private-key-path/private.key .

Si vous n'avez pas de certificat SSL acheté valide, vous pouvez générer votre propre certificat SSL auto-signé. N'oubliez pas qu'un certificat SSL auto-signé n'est pas recommandé pour les environnements de production. Pour générer un certificat SSL auto-signé, exécutez la commande suivante :

$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout \ /etc/ssl/private/nginx-private.key -out /etc/ssl/certs/nginx-certificate.crt 

Il vous sera demandé de soumettre des détails tels que le code du pays, le nom de domaine, l'identifiant de messagerie. Remplissez les détails et continuez.

Maintenant, configurez l'authentification de base en tant que :

Aller au répertoire d'authentification

$ cd auth

Demandez un nouveau fichier de mot de passe nommé register.password pour votre utilisateur. Dans cet exemple, je vais utiliser l'utilisateur linuxtechi.

$ htpasswd -Bc register.password linuxtechi

Si vous obtenez 'htpasswd not found command', exécutez la commande suivante dans votre terminal et réessayez.

$  sudo apt install apache2-utils -y

Tapez un mot de passe fort et entrez à nouveau pour confirmer votre mot de passe. Vous avez ajouté un utilisateur d'authentification de base pour le registre docker.

Exécuter le registre Docker

Vous avez terminé la configuration. Vous pouvez créer un registre à l'aide de la commande docker-compose.

Allez dans le répertoire où nous créons le fichier docker-compose.yml

$ cd monregistre

Exécutez maintenant la commande suivante :

$ docker-compose up -d

Le registre Docker est maintenant opérationnel, vous pouvez vérifier les conteneurs en cours d'exécution à l'aide de la commande suivante :

$ docker ps-a

Vous obtiendrez la sortie suivante :

Extraire l'image de Docker Hub vers un registre privé

Pour stocker une image du hub Docker dans un registre privé, utilisez la commande docker pull pour extraire les images docker du hub docker. Dans cet exemple, je vais extraire l'image docker des centos.

$ docker pull centos

Après avoir réussi à extraire des images du docker hub, étiquetez une image pour l'étiqueter pour le registre privé.

Dans cet exemple, je vais baliser les images centos comme suit :register.linuxtechi.com/linuxtechi-centos

$ balise d'image docker [nom de l'image] register.linuxtechi.com/[nouveau-nom-de-l'image]

Exemple :

Balise $ docker images centos Registry.linuxtechi.com/linuxtechi-centos

Pour vérifier si l'image docker est disponible localement ou non, exécutez la commande suivante.

$ images docker

Pousser l'image docker vers le registre privé

Vous avez extrait l'image Docker du hub Docker et créé une balise pour le registre privé. Vous devez maintenant transférer l'image docker locale vers le registre privé.

Tout d'abord, connectez-vous à votre registre privé à l'aide de la commande suivante :

$ connexion docker https://registry.linuxtechi.com/v2/

Utilisez votre propre URL de registre à la place de "https://registry.linuxtechi.com"

Vous serez invité à entrer votre nom d'utilisateur et votre mot de passe ; vous recevrez un message de connexion réussie comme :

Vous pouvez maintenant transférer votre image docker vers un registre privé. Pour pousser l'image, exécutez la commande suivante :

$ docker push register.linuxtechi.com/linuxtechi-centos

Remplacez le nom de votre image après "docker push"

Une fois le push terminé, vous pouvez accéder au navigateur et saisir l'url :

https://registry.linuxtechi.com/v2/_catalog

Remplacez register.linuxtechi.com par votre propre URL et fournissez une authentification de base. Vous trouverez la liste des référentiels sous la forme :

Extraction de l'image docker du registre privé

Vous avez poussé votre image Docker locale vers votre registre Docker privé. De la même manière, vous pouvez extraire des images Docker de votre registre privé Docker vers le serveur local.

Exécutez la commande suivante pour vous connecter à votre serveur de registre privé.

$ connexion docker https://registry.linuxtechi.com

Remplacez register.linuxtechi.com par votre propre URL de registre privé et fournissez une authentification de base. Une fois la connexion réussie, exécutez la commande suivante pour extraire l'image docker du registre privé. Dans cet exemple, je vais extraire l'image docker précédemment poussée sur le serveur local. Vous pouvez avoir votre propre hypothèse pour le nom de l'image docker.

$ docker pull register.linuxtechi.com/linuxtechi-centos

Vous aurez une sortie similaire à :

Conclusion :

Dans l'article, vous avez appris comment héberger votre propre registre Docker privé. Vous avez également une idée de la façon d'extraire des images du hub Docker vers un serveur local, de marquer l'image et de la pousser dans le registre privé. Vous avez également appris à extraire des images Docker du registre privé du serveur local.

Lire aussi  :Comment installer KVM sur le serveur Ubuntu 20.04 LTS (Focal Fossa)


Ubuntu
  1. Comment configurer et utiliser le registre Docker privé

  2. Comment configurer un registre Docker privé sur Rocky Linux 8

  3. Comment configurer HAProxy dans Ubuntu 16.04

  4. Comment installer Docker sur Ubuntu 18.04 / Ubuntu 18.10 / Ubuntu 19.04

  5. Comment configurer proprement le Docker réseau dans Ubuntu Gnome 15.10 ?

Comment installer et configurer Docker Swarm Cluster sur Ubuntu

Comment configurer le registre Docker privé sur Ubuntu 18.04 LTS

Comment configurer le registre privé Docker sur CentOS 7 / Ubuntu 16.04 / Fedora 26/25

Comment installer Docker sur Ubuntu 20.04, 18.04, 21.04

Comment installer Docker sur Ubuntu 14.04

Comment créer un registre Docker privé sur Ubuntu Linux