Installer la bibliothèque miroir Docker privée sur le système Ubuntu

installation-du-registre-docker-privé

Dans cet article, nous allons apprendre à configurer un référentiel docker privé sur Ubuntu 20.04.

Pourquoi Docker Registry privé ?

Pour un développement CI/CD fluide à l'aide de la plate-forme Docker, envisagez d'utiliser un registre Docker auto-hébergé. Pour une livraison plus rapide et une infrastructure sécurisée, il est recommandé de configurer votre propre registre privé Docker pour stocker vos images Docker et les distribuer au sein de votre organisation.

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.

Qu'est-ce qu'un registre Docker privé ?

Docker Registry est une application côté serveur qui vous permet de stocker des images Docker localement dans un emplacement centralisé. En configurant votre propre serveur Docker Registry, vous pouvez extraire et envoyer des images Docker sans vous connecter à Docker Hub, ce qui permet d'économiser de la bande passante et de prévenir les menaces de sécurité.

Avant de commencer, assurez-vous d'avoir installé Docker et Docker-Compose sur le serveur client et le serveur d'images local. Si vous devez vérifier si le logiciel requis est installé, vous pouvez exécuter la commande suivante pour vérifier la version du logiciel.

$ docker version

docker-version-sortie-linux

$ docker-compose version

docker-compose-version-sortie-linux

En outre, vous devez vous assurer que le service Docker est démarré et activé au démarrage.

$ sudo systemctl start docker
$ sudo systemctl enable docker

Installer et configurer Docker Registry

Pour configurer un registre Docker privé, suivez ces étapes

Créer un répertoire de registre

Créez un nouveau répertoire où tous les fichiers de configuration requis seront stockés

Créez un nouveau répertoire de projet myregistry et deux sous-répertoires nginx et auth à l'aide de la commande suivante

$ mkdir -p myregistry/{nginx, auth}

Créez deux sous-répertoires conf.d et ssl dans le répertoire nginx

$ cd my-registry/
$ mkdir -p nginx/{conf.d/, ssl}

Créer des scripts et des services Docker-Compose

Créez un fichier docker-compose.yml dans le répertoire myregistry

$ vi docker-compose.yml

Définissez le service dans le fichier docker-compose.yml

services:
#Registry
  registry:
    image: registry:2
    restart: always
    ports:
    - "5000:5000"
    environment:
      REGISTRY_AUTH: htpasswd
      REGISTRY_AUTH_HTPASSWD_REALM: Registry-Realm
      REGISTRY_AUTH_HTPASSWD_PATH: /auth/registry.passwd
      REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /data
    volumes:
      - myregistrydata:/data
      - ./auth:/auth
    networks:
      - mynet

#Nginx Service
  nginx:
    image: nginx:alpine
    container_name: nginx
    restart: unless-stopped
    tty: true
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx/conf.d/:/etc/nginx/conf.d/
      - ./nginx/ssl/:/etc/nginx/ssl/
    networks:
      - mynet

#Docker Networks
networks:
  mynet:
    driver: bridge

#Volumes
volumes:
  myregistrydata:
    driver: local

Enregistrez et fermez le fichier

Configurer le transfert de port nginx

Créez une configuration d'hôte virtuel pour le service nginx, accédez au répertoire nginx/conf.d créé dans les étapes ci-dessus

$ cd nginx/conf.d/

Créer un fichier d'hôte virtuel nginx

$ vi myregistry.conf

Ajoutez ce qui suit

upstream docker-registry {
    server registry:5000;
}
server {
    listen 80;
    server_name registry.linuxtechi.com;
    return 301 https://registry.linuxtechi.com$request_uri;
}
server {
    listen 443 ssl http2;
    server_name registry.linuxtechi.com;
    ssl_certificate /etc/nginx/ssl/certificate.crt;
    ssl_certificate_key /etc/nginx/ssl/private.key;
    # Log files for Debug
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    location / {
        if ($http_user_agent ~ "^(docker\/1\.(3|4|5(?!\.[0-9]-dev))|Go ).*$" )  {
            return 404;
        }
        proxy_pass                          http://docker-registry;
        proxy_set_header  Host              $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 le paramètre server_name par votre propre nom de domaine et enregistrez le fichier

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

Par défaut, nginx télécharge des fichiers avec une limite supérieure de 1 Mo. Lorsque l'image docker dépasse 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 les lignes suivantes et enregistrez le fichier

client_max_body_size 2G;

Configurer les certificats SSL et l'authentification

Après avoir créé le fichier de configuration nginx, nous devons maintenant configurer le 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 et exécutez la commande suivante :

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

Si vous ne disposez pas d'un certificat SSL acheté valide, vous pouvez générer votre propre certificat SSL auto-signé. Il n'est pas recommandé d'utiliser un certificat SSL auto-signé dans un environnement 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'e-mail, de remplir les détails et de continuer.

Configurer l'authentification de base

Allez dans le répertoire auth

$ cd auth

Exécutez la commande suivante pour créer un fichier de mots de passe, le nom d'utilisateur est : linuxtechi

$ htpasswd -Bc registry.password linuxtechi

Si le système invite la commande htpasswd introuvable, veuillez exécuter la commande suivante dans le terminal et réessayer

$  sudo apt install apache2-utils -y

Entrez un mot de passe fort et entrez-le à nouveau pour confirmer le mot de passe

Exécuter le registre Docker

Vous avez terminé l'installation et pouvez maintenant créer le registre à l'aide de la commande docker-compose

Allez dans le répertoire myregistry

$ cd myregistry

Exécutez la commande suivante pour créer l'image

$ docker-compose up -d

Docker Registry a démarré, vérifiez avec la commande suivante

$ docker ps -a

docker-ps-a-command-output-linux

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

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

$ docker pull centos

Après avoir réussi à extraire l'image du docker hub, marquez-la comme registre privé

Syntaxe de balisage :

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

Les exemples sont les suivants :

$ docker images tag centos registry.linuxtechi.com/linuxtechi-centos

Vérifiez que l'image docker est disponible localement

$ docker images

Pousser l'image vers le registre privé

Maintenant, vous devez pousser votre image locale vers le registre privé, connectez-vous d'abord au registre privé avec la commande suivante

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

Remplacez https://registry.linuxtechi.com par votre propre URL de registre

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

docker-login-registre-privé-linux

Vous pouvez maintenant pousser l'image vers votre registre privé avec la commande suivante

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

Une fois le push terminé, visitez l'URL dans le navigateur

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

docker-registre-privé-gui-linux

Extraire les miroirs du registre privé

Vous avez poussé l'image Docker locale vers le registre Docker privé, de la même manière, vous pouvez extraire l'image Docker du registre privé Docker vers le serveur local.

Connectez-vous à votre serveur de registre privé en exécutant la commande suivante

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

Exécutez la commande suivante pour extraire l'image

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

docker-pull-image-registre-privé-linux

mon projet open source

Kugua Cloud Classroom - Solution d'éducation en ligne

Je suppose que tu aimes

Origine blog.csdn.net/xiaochong0302/article/details/129417194
conseillé
Classement