Recherche…


Introduction

Un registre de docker privé et sécurisé au lieu d'un Docker Hub. Les compétences de base de docker sont requises.

Paramètres

Commander Explication
sudo docker run -p 5000: 5000 Démarrez un conteneur Docker et liez le port 5000 du conteneur au port 5000 de la machine physique.
--nom de registre Nom du conteneur (utilisé pour améliorer la lisibilité de «docker ps»).
-v 'pwd' / certs: / certs Liez CURRENT_DIR / certs de la machine physique sur / certs du conteneur (comme un «dossier partagé»).
-e REGISTRY_HTTP_TLS_CERTIFICATE = / certs / server.crt Nous spécifions que le registre doit utiliser le fichier /certs/server.crt pour démarrer. (variable env)
-e REGISTRY_HTTP_TLS_KEY = / certs / server.key Identique pour la clé RSA (server.key).
-v / root / images: / var / lib / registry / Si vous souhaitez enregistrer toutes vos images de registre, vous devez le faire sur la machine physique. Ici, nous sauvegardons toutes les images sur / root / images sur la machine physique. Si vous faites cela, vous pouvez arrêter et redémarrer le registre sans perdre aucune image.
registre: 2 Nous spécifions que nous aimerions extraire l'image du registre de docker hub (ou localement), et nous ajoutons «2» car nous voulons installer la version 2 du registre.

Remarques

Comment installer un moteur de docker (appelé client sur ce tutoriel)

Comment générer un certificat SSL auto-signé

Générer des certificats

Génère une clé privée RSA: openssl genrsa -des3 -out server.key 4096

Openssl devrait demander une phrase de passe à cette étape. Notez que nous n'utiliserons que des certificats pour la communication et l'authentification, sans phrase secrète. Utilisez simplement 123456 par exemple.

Générer la demande de signature de certificat: openssl req -new -key server.key -out server.csr

Cette étape est importante car vous devrez fournir des informations sur les certificats. Les informations les plus importantes sont «Nom commun», c'est-à-dire le nom de domaine, utilisé pour la communication entre le registre de docker privé et tous les autres ordinateurs. Exemple: mydomain.com

Supprimer le mot de passe de la clé privée RSA: cp server.key server.key.org && openssl rsa -in server.key.org -out server.key

Comme je l'ai dit, nous allons nous concentrer sur le certificat sans phrase secrète. Soyez donc prudent avec tous les fichiers de votre clé (.key, .csr, .crt) et conservez-les dans un endroit sûr.

Générez le certificat auto-signé: openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

Vous avez maintenant deux fichiers essentiels, server.key et server.crt , nécessaires à l'authentification du registre privé.

Exécutez le registre avec un certificat auto-signé

Pour exécuter le registre privé (en toute sécurité), vous devez générer un certificat auto-signé, vous pouvez vous référer à l'exemple précédent pour le générer.

Pour mon exemple, je mets server.key et server.crt dans / root / certs

Avant d'exécuter la commande docker, vous devriez être placé (utilisez cd ) dans le répertoire contenant le dossier certs . Si vous n'êtes pas et que vous essayez d'exécuter la commande, vous recevrez une erreur comme

level = fatal msg = "open /certs/server.crt: pas de tel fichier ou répertoire"

Quand vous êtes ( cd /root dans mon exemple), vous pouvez essentiellement démarrer le registre sécurisé / privé en utilisant: sudo docker run -p 5000:5000 --restart=always --name registry -v `pwd`/certs:/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/server.crt -e REGISTRY_HTTP_TLS_KEY=/certs/server.key -v /root/Documents:/var/lib/registry/ registry:2
Des explications sur la commande sont disponibles dans la partie Paramètres.

Tirez ou poussez depuis un client Docker

Lorsque vous obtenez un registre en cours d'exécution, vous pouvez extraire ou diffuser des images. Pour cela, vous avez besoin du fichier server.crt dans un dossier spécial sur votre client docker. Le certificat vous permet de vous authentifier avec le registre, puis de chiffrer la communication.

Copiez server.crt de la machine de registre dans /etc/docker/certs.d/mydomain.com:5000/ sur votre ordinateur client. Et puis renommez-le en ca-certificates.crt : mv /etc/docker/certs.d/mydomain.com:5000/server.crt /etc/docker/certs.d/mydomain.com:5000/ca-certificates.crt

À ce stade, vous pouvez extraire ou pousser des images à partir de votre registre privé:
PULL: docker pull mydomain.com:5000/nginx ou
POUSSER :

  1. Obtenez une image officielle de hub.docker.com: docker pull nginx
  2. Marquez cette image avant de la placer dans un registre privé: docker tag IMAGE_ID mydomain.com:5000/nginx (utilisez les docker images pour obtenir le IMAGE_ID)
  3. Poussez l'image dans le registre: docker push mydomain.com:5000/nginx


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow