GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

So richten Sie eine private Docker-Registrierung unter Ubuntu 20.04 ein

Für eine reibungslose CI/CD-Entwicklung mit der Docker-Plattform sollten Sie die Verwendung eines selbst gehosteten Docker-Registrierungsservers in Betracht ziehen. Die Docker-Registrierung ist das Repository, in dem Sie Ihre Docker-Images speichern und abrufen können, um Anwendungen auf dem Server auszuführen. Für eine schnellere Bereitstellung sowie eine sichere Infrastruktur wird empfohlen, Ihre eigene private Docker-Registrierung einzurichten, um Ihre Docker-Images zu speichern und unter Organisationen zu verteilen. In diesem Artikel erfahren Sie, wie Sie eine private Docker-Registrierung unter Ubuntu 20.04 einrichten

Voraussetzungen

  • Benutzerkonto mit sudo-Berechtigungen
  • Ein Server für die Docker-Registrierung
  • Nginx auf dem Docker Registry-Server
  • Ein Client-Server
  • Docker und Docker-Compose auf beiden Servern.

Private Docker-Registrierung

Docker Registry ist eine serverseitige Anwendung, mit der Sie Ihre Docker-Images lokal an einem zentralen Ort speichern können. Indem Sie Ihren eigenen Docker-Registrierungsserver einrichten, können Sie Docker-Images ziehen und übertragen, ohne eine Verbindung zum Docker-Hub herstellen zu müssen, was Ihre Bandbreite spart und Sie vor Sicherheitsbedrohungen schützt.

Auch lesen :So installieren und verwenden Sie Docker unter Ubuntu 20.04 / 20.10

Bevor Sie beginnen

Bevor ich beginne, stelle ich sicher, dass Sie Docker und Docker-Compose sowohl auf dem Client-Server als auch auf dem lokalen Registrierungsserver installiert haben. Um zu überprüfen, ob Sie die erforderliche Software installiert haben, können Sie die folgenden Befehle ausführen, um die Softwareversion zu überprüfen.

$ Docker-Version

$ docker-compose-Version

Außerdem müssen Sie sicherstellen, dass der Docker-Dienst gestartet und so eingerichtet ist, dass er beim Booten aktiviert wird:

$ sudo systemctl docker starten$ sudo systemctl docker aktivieren

Installieren und konfigurieren Sie die private Docker-Registrierung

Führen Sie die folgenden Schritte aus, um die private Docker-Registrierung zu konfigurieren:

Registrierungsverzeichnisse erstellen

Konfigurieren Sie Ihren Server, der eine private Registrierung hosten soll. Erstellen Sie ein neues Verzeichnis, in dem alle erforderlichen Konfigurationsdateien gespeichert werden.

Verwenden Sie den folgenden Befehl, um ein neues Projektverzeichnis „my-registry“ und zwei Unterverzeichnisse „nginx“ und „auth“ zu erstellen. Sie können Ihre eigene Annahme für den Projektnamen haben.

$ mkdir -p my-registry/{nginx, auth}

Navigieren Sie nun zum Projektverzeichnis und erstellen Sie neue Verzeichnisse in nginx als:

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

Erstellen Sie Docker-Compose-Skript und -Dienste

Sie müssen ein neues docker-compose.yml-Skript erstellen, das die docker-compose-Version und die Dienste definiert, die zum Einrichten einer privaten Registrierung erforderlich sind.

Erstellen Sie mit dem vi-Editor eine neue Datei „docker-compose.yml“ im Verzeichnis „my-registry“.

$ vi docker-compose.yml

Definieren Sie Ihren Dienst in der docker-compose-Datei als:

 Services:myregistrydata:/data      - ./auth:/auth    networks:      - 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/    Netzwerke:      - mynet#Docker Networksnetworks:  mynet:    Treiber:Bridge# Volumesvolumes:  myregistrydata:    driver:local

Speichern und schließen Sie die Datei

Nginx-Portweiterleitung einrichten

Wir müssen eine virtuelle nginx-Hostkonfiguration für den nginx-Webdienst erstellen. Wechseln Sie in das im obigen Schritt erstellte Verzeichnis nginx/conf.d/.

$ cd nginx/conf.d/

Erstellen Sie nun mit Ihrem Texteditor eine virtuelle nginx-Hostdatei. In diesem Beispiel werde ich es myregistry.conf nennen. Sie können Ihre eigene Annahme haben.

$ vi meineregistrierung.conf

Fügen Sie den folgenden Inhalt hinzu:

Upstream Docker-Registry {    Server Registry:5000;}Server {    listen 80; server_name registrierung.linuxtechi.com; return 301 https://registry.linuxtechi.com$request_uri;}server {    listen 443 ssl http2; server_name registrierung.linuxtechi.com; ssl_certificate /etc/nginx/ssl/certificate.crt; ssl_certificate_key /etc/nginx/ssl/private.key; # Protokolldateien für 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-$-Schema; proxy_read_timeout                  900; }}

Ersetzen Sie Ihren Domänennamen durch den Parameter server_name und speichern Sie die Datei.

Upload-Größe der nginx-Datei erhöhen

Standardmäßig hat nginx ein Limit von 1 MB zum Hochladen von Dateien. Da Docker-Bilder dieses Limit überschreiten, müssen Sie die Upload-Größe in der nginx-Konfigurationsdatei erhöhen. In diesem Beispiel erstelle ich eine zusätzliche Nginx-Konfigurationsdatei mit einem Upload-Limit von 2 GB .

Gehen Sie zum nginx-Konfigurationsverzeichnis

$ cd myregistry/nginx/conf.d$ vi zusätzliche.conf

Fügen Sie die folgende Zeile hinzu und speichern Sie die Datei

client_max_body_size 2G;

SSL-Zertifikat und Authentifizierung konfigurieren

Nach dem Erstellen der Nginx-Konfigurationsdatei müssen wir nun ein SSL-Zertifikat einrichten. Sie sollten über eine gültige SSL-Zertifikatsdatei mit einem privaten Schlüssel verfügen. Kopieren Sie Ihre Zertifikatsdatei und Ihren privaten Schlüssel in das Verzeichnis nginx/ssl als:

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

Wenn Sie kein gültiges gekauftes SSL-Zertifikat haben, können Sie Ihr eigenes selbst signiertes SSL-Zertifikat generieren. Denken Sie daran, dass ein selbstsigniertes SSL-Zertifikat für Produktionsumgebungen nicht empfohlen wird. Führen Sie den folgenden Befehl aus, um ein selbstsigniertes SSL-Zertifikat zu generieren:

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

Sie werden aufgefordert, einige Details wie Ländercode, Domänenname und E-Mail-ID anzugeben. Füllen Sie die Details aus und fahren Sie fort.

Richten Sie jetzt die Standardauthentifizierung ein als:

Wechseln Sie in das Authentifizierungsverzeichnis

$ cd auth

Fordern Sie eine neue Kennwortdatei mit dem Namen „registry.password“ für Ihren Benutzer an. In diesem Beispiel verwende ich linuxtechi user.

$ htpasswd -Bc registrierung.kennwort linuxtechi

Wenn Sie den Befehl „htpasswd not found“ erhalten, führen Sie den folgenden Befehl in Ihrem Terminal aus und versuchen Sie es erneut.

$  sudo apt install apache2-utils -y

Geben Sie ein starkes Passwort ein und geben Sie es erneut ein, um Ihr Passwort zu bestätigen. Sie haben einen Basisauthentifizierungsbenutzer für die Docker-Registrierung hinzugefügt.

Docker-Registrierung ausführen

Sie haben die Einrichtung abgeschlossen. Sie können die Registrierung mit dem Befehl docker-compose erstellen.

Gehen Sie in das Verzeichnis, in dem wir die Datei docker-compose.yml erstellen

$ cd meineregistrierung

Führen Sie nun den folgenden Befehl aus:

$ docker-compose up -d

Die Docker-Registrierung ist jetzt aktiv, Sie können die laufenden Container mit dem folgenden Befehl überprüfen:

$ docker ps -a

Sie erhalten folgende Ausgabe:

Image von Docker Hub in eine private Registrierung ziehen

Um ein Image vom Docker-Hub in der privaten Registrierung zu speichern, verwenden Sie den Docker-Pull-Befehl, um Docker-Images vom Docker-Hub abzurufen. In diesem Beispiel werde ich das Docker-Image von Centos abrufen.

$ docker pull centos

Nachdem Sie Images erfolgreich vom Docker-Hub abgerufen haben, markieren Sie ein Image, um es für die private Registrierung zu kennzeichnen.

In diesem Beispiel werde ich Centos-Images als taggen:registration.linuxtechi.com/linuxtechi-centos

$ Docker-Image-Tag [Image-Name] Registry.linuxtechi.com/[neuer-Image-Name]

Beispiel:

$-Docker-Images-Tag Centos-Registry.linuxtechi.com/linuxtechi-centos

Führen Sie den folgenden Befehl aus, um zu überprüfen, ob das Docker-Image lokal verfügbar ist oder nicht.

$ Docker-Bilder

Docker-Image in private Registry übertragen

Sie haben das Docker-Image vom Docker-Hub abgerufen und ein Tag für die private Registrierung erstellt. Jetzt müssen Sie das lokale Docker-Image in die private Registrierung verschieben.

Melden Sie sich zunächst mit dem folgenden Befehl bei Ihrer privaten Registrierung an:

$ Docker-Login https://registry.linuxtechi.com/v2/

Verwenden Sie Ihre eigene Registrierungs-URL anstelle von „https://registry.linuxtechi.com“

Sie werden nach Benutzername und Passwort gefragt; Sie erhalten eine Meldung über die erfolgreiche Anmeldung als:

Jetzt können Sie Ihr Docker-Image in eine private Registry verschieben. Führen Sie den folgenden Befehl aus, um ein Bild zu übertragen:

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

Ersetzen Sie Ihren Bildnamen nach „docker push“

Sobald der Push abgeschlossen ist, können Sie zum Browser gehen und die URL eingeben:

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

Ersetzen Sie „registry.linuxtechi.com“ durch Ihre eigene URL und stellen Sie eine grundlegende Authentifizierung bereit. Sie finden die Repositories-Liste als :

Docker-Image aus privater Registrierung abrufen

Sie haben Ihr lokales Docker-Image in Ihre private Docker-Registrierung gepusht. Auf die gleiche Weise können Sie Docker-Images aus Ihrer privaten Docker-Registrierung auf den lokalen Server ziehen.

Führen Sie den folgenden Befehl aus, um sich bei Ihrem privaten Registrierungsserver anzumelden.

$ Docker-Login https://registry.linuxtechi.com

Ersetzen Sie „registry.linuxtechi.com“ durch Ihre eigene private Registrierungs-URL und stellen Sie eine grundlegende Authentifizierung bereit. Führen Sie nach erfolgreicher Anmeldung den folgenden Befehl aus, um das Docker-Image aus der privaten Registrierung abzurufen. In diesem Beispiel werde ich ein zuvor gepushtes Docker-Image auf dem lokalen Server abrufen. Sie können Ihre eigene Annahme für den Docker-Image-Namen haben.

$ Docker-Pull-Registry.linuxtechi.com/linuxtechi-centos

Sie erhalten eine ähnliche Ausgabe wie:

Schlussfolgerung:

In dem Artikel haben Sie erfahren, wie Sie Ihre eigene private Docker-Registry hosten können. Außerdem haben Sie eine Vorstellung davon, wie Sie Bilder vom Docker-Hub auf den lokalen Server ziehen, das Bild markieren und in die private Registrierung übertragen. Sie haben auch gelernt, wie man Docker-Images aus der privaten Registrierung auf dem lokalen Server zieht.

Auch lesen :So installieren Sie KVM auf Ubuntu 20.04 LTS Server (Focal Fossa)


Ubuntu
  1. So richten Sie eine private Docker-Registrierung ein und verwenden sie

  2. Anleitung zum Einrichten einer privaten Docker-Registrierung unter Rocky Linux 8

  3. So richten Sie HAProxy in Ubuntu 16.04 ein

  4. So installieren Sie Docker unter Ubuntu 18.04 / Ubuntu 18.10 / Ubuntu 19.04

  5. Wie richte ich den Netzwerk-Docker in Ubuntu Gnome 15.10 sauber ein?

So richten Sie Docker Swarm Cluster auf Ubuntu ein und konfigurieren es

So richten Sie eine private Docker-Registrierung unter Ubuntu 18.04 LTS ein

So richten Sie Docker Private Registry unter CentOS 7 / Ubuntu 16.04 / Fedora 26/25 ein

So installieren Sie Docker unter Ubuntu 20.04, 18.04, 21.04

So installieren Sie Docker unter Ubuntu 14.04

So erstellen Sie eine private Docker-Registrierung unter Ubuntu Linux