Suche…


Einführung

Eine private und sichere Dockerregistrierung anstelle eines Docker Hub. Grundlegende Dockerfähigkeiten sind erforderlich.

Parameter

Befehl Erläuterung
sudo docker run -p 5000: 5000 Starten Sie einen Docker-Container und binden Sie den Port 5000 vom Container an den Port 5000 der physischen Maschine.
--name Registrierung Containername (zur besseren Lesbarkeit von "docker ps").
-v 'pwd' / certs: / certs Binden Sie CURRENT_DIR / certs des physischen Computers an / certs des Containers (wie ein "freigegebener Ordner").
-e REGISTRY_HTTP_TLS_CERTIFICATE = / certs / server.crt Wir geben an, dass die Registry die Datei /certs/server.crt zum Starten verwenden soll. (Umgebungsvariable)
-e REGISTRY_HTTP_TLS_KEY = / certs / server.key Gleiches für den RSA-Schlüssel (server.key).
-v / root / images: / var / lib / registry / Wenn Sie alle Registrierungsabbilder speichern möchten, sollten Sie dies auf dem physischen Computer tun. Hier speichern wir alle Bilder in / root / images auf dem physischen Computer. Wenn Sie dies tun, können Sie die Registrierung anhalten und erneut starten, ohne Bilder zu verlieren.
Registrierung: 2 Wir geben an, dass wir das Registrierungsabbild vom Docker-Hub (oder lokal) ziehen möchten, und fügen "2" hinzu, weil wir die Version 2 der Registrierung installieren möchten.

Bemerkungen

So installieren Sie eine Docker-Engine (in diesem Lernprogramm als Client bezeichnet)

So erstellen Sie ein selbstsigniertes SSL-Zertifikat

Zertifikate generieren

Generieren Sie einen privaten RSA-Schlüssel: openssl genrsa -des3 -out server.key 4096

Openssl sollte in diesem Schritt nach einer Passphrase fragen. Beachten Sie, dass wir nur das Zertifikat für die Kommunikation und Authentifizierung ohne Passphrase verwenden. Verwenden Sie einfach 123456.

Generieren Sie die Zertifikatsignierungsanforderung: openssl req -new -key server.key -out server.csr

Dieser Schritt ist wichtig, da Sie nach Informationen zu Zertifikaten gefragt werden. Die wichtigsten Informationen sind "Common Name", dh der Domänenname, der für die Kommunikation zwischen der privaten Docker-Registrierung und allen anderen Computern verwendet wird. Beispiel: mydomain.com

Entfernen cp server.key server.key.org && openssl rsa -in server.key.org -out server.key aus dem privaten RSA-Schlüssel: cp server.key server.key.org && openssl rsa -in server.key.org -out server.key

Wie gesagt, konzentrieren wir uns auf das Zertifikat ohne Passphrase. Seien Sie also vorsichtig mit allen Schlüsseldateien (.key, .csr, .crt) und bewahren Sie sie an einem sicheren Ort auf.

Generieren Sie das selbstsignierte Zertifikat: openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

Sie haben jetzt zwei wichtige Dateien, server.key und server.crt , die für die private Registrierungsauthentifizierung erforderlich sind.

Führen Sie die Registrierung mit einem selbstsignierten Zertifikat aus

Um die private Registry (sicher) auszuführen, müssen Sie ein selbstsigniertes Zertifikat erstellen. Sie können sich auf das vorherige Beispiel beziehen, um es zu generieren.

Für mein Beispiel habe ich server.key und server.crt in / root / certs eingefügt

Vor dem Lauf Docker Befehl sollten Sie platziert (verwenden werden cd ) in das Verzeichnis , das certs - Ordner enthält. Wenn dies nicht der Fall ist und Sie versuchen, den Befehl auszuführen, erhalten Sie eine Fehlermeldung wie

level = fatal msg = "/certs/server.crt öffnen: keine solche Datei oder Verzeichnis"

Wenn Sie ( cd /root in meinem Beispiel) sind, können Sie die sichere / private Registrierung grundsätzlich mit folgendem 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 starten: 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
Erläuterungen zum Befehl finden Sie im Parameter-Teil.

Ziehen oder drücken Sie einen Docker-Client

Wenn Sie eine funktionierende Registry ausführen, können Sie Bilder darauf laden oder verschieben. Dazu benötigen Sie die server.crt -Datei in einem speziellen Ordner auf Ihrem Docker-Client. Mit dem Zertifikat können Sie sich bei der Registrierung authentifizieren und anschließend die Kommunikation verschlüsseln.

Kopieren Sie server.crt von der Registrierungsmaschine in die Datei /etc/docker/certs.d/mydomain.com:5000/ auf Ihrer Clientmaschine. mv /etc/docker/certs.d/mydomain.com:5000/server.crt /etc/docker/certs.d/mydomain.com:5000/ca-certificates.crt dann in ca-certificate.crt um : mv /etc/docker/certs.d/mydomain.com:5000/server.crt /etc/docker/certs.d/mydomain.com:5000/ca-certificates.crt

An dieser Stelle können Sie Bilder aus Ihrer privaten Registry ziehen oder verschieben:
PULL: docker pull mydomain.com:5000/nginx oder
DRÜCKEN :

  1. Holen Sie sich ein offizielles Image von hub.docker.com: docker docker pull nginx
  2. docker tag IMAGE_ID mydomain.com:5000/nginx dieses Bild, bevor Sie es in die private Registry verschieben: docker tag IMAGE_ID mydomain.com:5000/nginx (verwenden Sie docker images , um die IMAGE_ID zu erhalten)
  3. Schieben Sie das Bild in die Registry: docker push mydomain.com:5000/nginx


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow