GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment configurer le registre Docker privé sur Ubuntu 18.04 LTS

Docker Registry ou 'Registry' est une application côté serveur open source et hautement évolutive qui peut être utilisée pour stocker et distribuer des images Docker. C'était une application côté serveur derrière le Docker Hub. Dans la plupart des cas d'utilisation, un registre Docker est une excellente solution si vous souhaitez implémenter le système CI/CD sur le développement de votre application. Le Private Docker Registry donne plus de performances pour le cycle de développement et de production en centralisant toutes vos images Docker personnalisées d'application en un seul endroit.

Dans ce didacticiel, nous allons vous montrer comment installer et configurer un registre Docker privé sur un serveur Ubuntu 18.04. Nous utiliserons un serveur Web Nginx et protégerons le registre avec un nom d'utilisateur et un mot de passe (authentification de base).

Prérequis

  • Serveur Ubuntu 18.04
  • Privilèges root

Qu'allons-nous faire ?

  1. Installer les dépendances
  2. Installer Docker et Docker-compose
  3. Configurer le registre Docker privé
  4. Test

Étape 1 - Installer les dépendances du package

Tout d'abord, nous allons installer quelques dépendances de packages pour déployer le Private Docker Registry.

Installez les dépendances des packages à l'aide de la commande suivante.

sudo apt install -y gnupg2 pass apache2-utils httpie

Les packages gnupg2 et pass seront utilisés pour stocker l'authentification par mot de passe dans le registre docker. Et les apache2-utils seront utilisés pour générer l'authentification de base, et httpie sera utilisé pour les tests.

Étape 2 - Installer Docker et Docker-compose

Nous allons maintenant installer le docker et docker-compose à partir du référentiel officiel Ubuntu.

Installez Docker et Docker-compose en exécutant la commande suivante.

sudo apt install -y docker.io docker-compose -y

Une fois l'installation terminée, démarrez le service Docker et ajoutez-le au temps de démarrage.

sudo systemctl start docker
sudo systemctl enable docker

Le Docker est opérationnel et le Docker-compose a été installé. Vérifiez à l'aide de la commande ci-dessous.

version docker
version docker-compose

Et vous verrez la version de Docker et Docker-compose installée sur votre système.

Étape 3 - Configurer le registre Docker privé

Dans cette étape, nous allons configurer l'environnement Docker Registry en créant un environnement de répertoires et créer une configuration comprenant docker-compose.yml, l'hôte virtuel nginx et une configuration supplémentaire, etc.

- Créer des répertoires de projet

Créez un nouveau répertoire pour le projet appelé 'registry' et créez les répertoires 'nginx' et 'auth' à l'intérieur.

mkdir -p registre/{nginx,auth}

Après cela, allez dans le répertoire 'registry' et créez à nouveau de nouveaux répertoires dans 'nginx'.

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

Et par conséquent, les répertoires du projet ressemblent à l'image suivante.

arbre

- Créer un script de composition Docker

Nous voulons maintenant créer un nouveau script docker-compose.yml pour déployer le registre Docker.

Allez dans le répertoire 'registry' et créez un nouveau fichier de configuration 'docker-compose.yml'.

cd registre/
vim docker-compose.yml

Tout d'abord, définissez la version de composition que vous souhaitez utiliser et le service.

version :'3'
services :

Après cela, ajoutez le premier service nommé 'registre'. Le service Docker Registry utilisera l'image docker fournie par l'équipe docker 'registry:2. Il montera le volume docker 'registrydata' et le répertoire local nommé 'auth' qui contient le fichier d'authentification de base 'registry.passwd'. Et le dernier, il s'exécutera sur l'image docker personnalisée nommée 'mynet' et exposera le port 5000 sur le conteneur et l'hôte.

#Registry Registry :image :Registry:2 redémarrer :toujours les ports :- "5000:5000" environnement :REGISTRY_AUTH :htpasswd REGISTRY_AUTH_HTPASSWD_REALM :Registry-Realm REGISTRY_AUTH_HTPASSWD_PATH :/auth/registry.passwd REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY :/volumes de données :-registrydata :/data - ./auth:/auth networks:- mynet

Ensuite, la configuration du service 'nginx' qui exécutera les ports HTTP et HTTPS et montera le répertoire local 'conf.d' pour la configuration de l'hôte virtuel, et le 'ssl' pour les certificats ssl.

#Nginx Service nginx :image :nginx:alpine container_name :redémarrage nginx :sauf si arrêté tty :vrais ports :- "80:80" - "443:443" volumes :- ./nginx/conf.d/ :/etc/nginx/conf.d/ - ./nginx/ssl/:/etc/nginx/ssl/ réseaux :- monnet

Et le dernier, définissez le réseau personnalisé 'mynet' avec le pilote de pont et le 'registrydata' avec un pilote local.

#Docker Networksnetworks :mynet :pilote :bridge#Volumesvolumes :registerdata :pilote :local

Enregistrez et fermez la configuration.

Ci-dessous la configuration complète :

version :'3'services :#Registry Registry :image :Registry:2 redémarrage :toujours ports :- "5000:5000" environnement :REGISTRY_AUTH :htpasswd REGISTRY_AUTH_HTPASSWD_REALM :Registry-Realm REGISTRY_AUTH_HTPASSWD_PATH :/auth/registry.passwd REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY :/data volumes :- registerdata:/data - ./auth:/auth networks :- mynet#Nginx Service nginx :image :nginx:alpine container_name :nginx restart :until-stopped tty :true ports :- "80:80" - Volumes "443:443" :- ./nginx/conf.d/:/etc/nginx/conf.d/ - ./nginx/ssl/:/etc/nginx/ssl/ réseaux :- monnet#Docker Réseauxréseaux :monnet :pilote :bridge#Volumesvolumes :données de registre :pilote :local

- Configurer l'hôte virtuel Nginx

Après avoir créé le script docker-compose, nous allons créer l'hôte virtuel et une configuration supplémentaire pour le service nginx.

Allez dans le répertoire 'nginx/conf.d/' et créez un nouveau fichier d'hôte virtuel appelé 'registry.conf'.

cd nginx/conf.d/
vim register.conf

Collez la configuration suivante.

registre docker en amont { registre du serveur :5000 ;} serveur { écouter 80 ; nom_serveur registre.hakase-labs.io ; retour 301 https://registry.hakase-labs.io$request_uri;}serveur { écouter 443 ssl http2; nom_serveur registre.hakase-labs.io ; certificat_ssl /etc/nginx/ssl/fullchain.pem ; ssl_certificate_key /etc/nginx/ssl/privkey.pem ; # Fichiers journaux pour Debug error_log /var/log/nginx/error.log ; access_log /var/log/nginx/access.log ; location / { # Ne pas autoriser les connexions depuis docker 1.5 et versions antérieures # docker pre-1.6.0 n'a pas correctement défini l'agent utilisateur sur ping, catch "Go *" user agents if ($http_user_agent ~ "^(docker\/1\ .(3|4|5(?!\.[0-9]-dev))|Aller ).*$" ) { return 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 ; }}

Enregistrez et fermez.

Ensuite, créez une configuration supplémentaire pour augmenter le max_body_size sur nginx. Cela vous permettra de télécharger des images Docker d'une taille maximale de 2 Go.

vim supplementaire.conf

Collez la configuration ci-dessous.

client_max_body_size 2G ;

Enregistrez et fermez.

- Configurer le certificat SSL et l'authentification de base

Copiez les fichiers de certificat SSL de votre domaine dans le répertoire 'ssl'.

cp /path/to/ssl/fullchain.pem ssl/
cp /path/to/ssl/privkey.pem ssl/

Allez maintenant dans le répertoire 'auth' et générez le nouveau fichier de mot de passe 'registry.passwd'.

cd auth/

Générez un nouveau mot de passe pour l'utilisateur hakase.

htpasswd -Bc register.passwd hakase
TAPEZ LE MOT DE PASSE FORT

Et la configuration de l'environnement pour le déploiement de Private Docker Registry est terminée.

Vous trouverez ci-dessous la capture d'écran de nos fichiers et répertoires d'environnement.

arbre

- Exécuter le registre Docker

Exécutez le registre Docker à l'aide de la commande docker-compose ci-dessous.

docker-composer jusqu'à -d

Et vous obtiendrez le résultat ci-dessous.

Après cela, assurez-vous que le registre et le service nginx sont opérationnels. Vérifiez à l'aide de la commande suivante.

docker-compose ps
netstat -plntu

Et on vous montrera que le service 'registre' s'exécute sur le port '5000', et le service 'nginx' exposera les ports HTTP et HTTPS comme ci-dessous.

Étape 4 - Tester

Avant de tester notre registre Docker privé, nous devons ajouter le certificat de l'autorité de certification racine au docker lui-même et au système.

Si vous utilisez le certificat de fichier pem, exportez-le vers le fichier .crt à l'aide de la commande OpenSSL.

openssl x509 -in rootCA.pem -inform PEM -out rootCA.crt

Créez maintenant un nouveau répertoire pour le certificat docker et copiez-y le certificat de l'autorité de certification racine.

mkdir -p /etc/docker/certs.d/registry.hakase-labs.io/
cp rootCA.crt /etc/docker/certs.d/registry.hakase-labs.io/

Ensuite, créez un nouveau répertoire '/usr/share/ca-certificate/extra' et copiez-y le certificat de l'autorité de certification racine.

mkdir -p /usr/share/ca-certificates/extra/
cp rootCA.crt /usr/share/ca-certificates/extra/

Après cela, reconfigurez le package 'ca-certificate' et redémarrez le service Docker.

dpkg-reconfigure ca-certificates
systemctl restart docker

- Télécharger l'image Docker

Téléchargez la nouvelle image Docker à l'aide de la commande suivante.

docker pull ubuntu:16.04

Une fois terminé, marquez l'image du registre privé avec la commande ci-dessous.

balise d'image docker ubuntu:16.04 Registry.hakase-labs.io/ubuntu16

Vérifiez à nouveau la liste des images Docker sur le système et vous obtiendrez de nouvelles images comme ci-dessous.

images fixes

- Pousser l'image vers le registre local privé

Connectez-vous au registre privé Docker à l'aide de la commande suivante.

connexion docker https://registry.hakase-labs.io/v2/

Tapez le nom d'utilisateur et le mot de passe basés sur le fichier 'registry.htpasswd'.

Vérifiez maintenant la disponibilité de l'image docker dans le registre.

http -a hakase https://registry.hakase-labs.io/v2/_catalog

Et il n'y a pas d'image docker dans le registre.

Poussez maintenant notre image personnalisée vers le registre privé Docker.

docker push registre.hakase-labs.io/ubuntu16

Vérifiez à nouveau et assurez-vous d'obtenir l'image du menu fixe "ubuntu16" sur le référentiel privé.

http -a hakase https://registry.hakase-labs.io/v2/_catalog

Et enfin, l'installation et la configuration de Private Docker Registry avec Nginx et l'authentification de base ont été terminées avec succès.


Ubuntu
  1. Comment installer Docker sur Ubuntu 22.04 / 20.04 LTS

  2. Comment configurer le registre Docker privé dans Kubernetes (k8s)

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

  4. Comment configurer le serveur Rsyslog sur Ubuntu 18.04 LTS

  5. Comment configurer Elasticsearch sur Ubuntu 18.04 et 16.04 LTS

Comment installer Docker sur Ubuntu 18.04 LTS

Comment configurer le pare-feu UFW sur Ubuntu 18.04 LTS

Comment configurer le pare-feu UFW sur Ubuntu 20.04 LTS

Comment installer Docker sur Ubuntu 20.04 LTS

Comment installer Kitematic sur Ubuntu 20.04 LTS

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