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

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

Docker Registry oder „Registry“ ist eine Open-Source- und hochskalierbare serverseitige Anwendung, die zum Speichern und Verteilen von Docker-Images verwendet werden kann. Es war eine serverseitige Anwendung hinter dem Docker Hub. In den meisten Anwendungsfällen ist eine Docker-Registrierung eine großartige Lösung, wenn Sie das CI/CD-System in Ihrer Anwendungsentwicklung implementieren möchten. Die private Docker-Registrierung bietet mehr Leistung für den Entwicklungs- und Produktionszyklus, indem alle Ihre benutzerdefinierten Docker-Images der Anwendung an einem Ort zentralisiert werden.

In diesem Tutorial zeigen wir Ihnen, wie Sie eine private Docker-Registrierung auf einem Ubuntu 18.04-Server installieren und konfigurieren. Wir verwenden einen Nginx-Webserver und schützen die Registry mit einem Nutzernamen und einem Passwort (Basisauthentifizierung).

Voraussetzungen

  • Ubuntu 18.04-Server
  • Root-Rechte

Was werden wir tun?

  1. Abhängigkeiten installieren
  2. Installieren Sie Docker und Docker-compose
  3. Private Docker-Registrierung einrichten
  4. Testen

Schritt 1 – Paketabhängigkeiten installieren

Zunächst werden wir einige Paketabhängigkeiten für die Bereitstellung der privaten Docker-Registrierung installieren.

Installieren Sie Paketabhängigkeiten mit dem folgenden Befehl.

sudo apt install -y gnupg2 pass apache2-utils httpie

Die Pakete gnupg2 und pass werden verwendet, um die Passwortauthentifizierung in der Docker-Registrierung zu speichern. Und die apache2-utils werden verwendet, um die grundlegende Authentifizierung zu generieren, und httpie wird zum Testen verwendet.

Schritt 2 – Docker und Docker-compose installieren

Jetzt werden wir Docker und Docker-Compose aus dem offiziellen Ubuntu-Repository installieren.

Installieren Sie Docker und Docker-compose, indem Sie den folgenden Befehl ausführen.

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

Starten Sie nach Abschluss der Installation den Docker-Dienst und fügen Sie ihn der Startzeit hinzu.

sudo systemctl docker starten
sudo systemctl docker aktivieren

Docker läuft und Docker-compose wurde installiert. Überprüfen Sie dies mit dem folgenden Befehl.

Docker-Version
Docker-Compose-Version

Und Ihnen wird die auf Ihrem System installierte Version von Docker und Docker-compose angezeigt.

Schritt 3 – Private Docker-Registrierung einrichten

In diesem Schritt konfigurieren wir die Docker-Registrierungsumgebung, indem wir einige Verzeichnisse erstellen und einige Konfigurationen erstellen, einschließlich docker-compose.yml, virtueller nginx-Host und zusätzliche Konfiguration usw.

- Erstellen Sie Projektverzeichnisse

Erstellen Sie ein neues Verzeichnis für das Projekt namens „registry“ und erstellen Sie darin die Verzeichnisse „nginx“ und „auth“.

mkdir -p Registry/{nginx,auth}

Gehen Sie danach in das Verzeichnis ‚registry‘ und erstellen Sie innerhalb von ‚nginx‘ erneut neue Verzeichnisse.

CD-Registry/
mkdir -p nginx/{conf.d/,ssl}

Und als Ergebnis sehen die Projektverzeichnisse wie im folgenden Bild aus.

Baum

- Docker-Compose-Skript erstellen

Jetzt wollen wir ein neues docker-compose.yml-Skript zum Deployment der Docker Registry erstellen.

Gehen Sie in das Verzeichnis „registry“ und erstellen Sie eine neue Konfigurationsdatei „docker-compose.yml“.

CD-Registry/
vim docker-compose.yml

Definieren Sie zunächst die Compose-Version, die Sie verwenden möchten, und den Dienst.

Version:'3'
Dienste:

Fügen Sie danach den ersten Dienst namens „registry“ hinzu. Der Docker-Registrierungsdienst verwendet das Docker-Image, das vom Docker-Team „registry:2. Es wird das Docker-Volume „registrydata“ und das lokale Verzeichnis mit dem Namen „auth“ bereitstellen, das die grundlegende Authentifizierungsdatei „registry.passwd“ enthält. Und zuletzt wird es auf dem benutzerdefinierten Docker-Image namens „mynet“ ausgeführt und den Port 5000 sowohl auf dem Container als auch auf dem Host verfügbar machen.

#Registry Registry:Image:Registry:2 Neustart:immer Ports:- "5000:5000" Umgebung:REGISTRY_AUTH:htpasswd REGISTRY_AUTH_HTPASSWD_REALM:Registry-Realm REGISTRY_AUTH_HTPASSWD_PATH:/auth/registry.passwd REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY:/Datenvolumen:- Registrydata:/data - ./auth:/auth networks:- mynet

Als nächstes die Konfiguration des „nginx“-Dienstes, der HTTP- und HTTPS-Ports ausführt und das lokale Verzeichnis „conf.d“ für die Konfiguration des virtuellen Hosts und „ssl“ für SSL-Zertifikate einbindet.

#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/ networks:- mynet

Und zuletzt definieren Sie das benutzerdefinierte Netzwerk „mynet“ mit Bridge-Treiber und die „registrydata“ mit einem lokalen Treiber.

#Docker Networksnetworks:mynet:driver:bridge#Volumesvolumes:Registrydata:driver:local

Speichern und schließen Sie die Konfiguration.

Unten ist die vollständige Konfiguration:

Version:'3'services:#Registry Registry:Image:Registry:2 Neustart:immer Ports:- "5000:5000" Umgebung:REGISTRY_AUTH:htpasswd REGISTRY_AUTH_HTPASSWD_REALM:Registry-Realm REGISTRY_AUTH_HTPASSWD_PATH:/auth/registry.passwd REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY:/Datenvolumen:- Registrierungsdaten:/Daten - ./auth:/auth Netzwerke:- 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:Registrierungsdaten:Treiber:Lokal

- Konfigurieren Sie den virtuellen Nginx-Host

Nach dem Erstellen des Docker-Compose-Skripts erstellen wir den virtuellen Host und zusätzliche Konfigurationen für den nginx-Dienst.

Gehen Sie in das Verzeichnis ‚nginx/conf.d/‘ und erstellen Sie eine neue virtuelle Hostdatei namens ‚registry.conf‘.

cd nginx/conf.d/
vim-registrierung.conf

Fügen Sie die folgende Konfiguration ein.

upstream docker-registry { Server Registry:5000;}server { listen 80; server_name registrierung.hakase-labs.io; return 301 https://registry.hakase-labs.io$request_uri;}server { listen 443 ssl http2; server_name registrierung.hakase-labs.io; ssl_certificate /etc/nginx/ssl/fullchain.pem; ssl_certificate_key /etc/nginx/ssl/privkey.pem; # Protokolldateien für Debug error_log /var/log/nginx/error.log; access_log /var/log/nginx/access.log; location / { # Keine Verbindungen von Docker 1.5 und früher zulassen # Docker vor 1.6.0 hat den Benutzeragenten nicht richtig auf Ping gesetzt, fangen Sie "Go *" Benutzeragenten ab, wenn ($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; }}

Speichern und schließen.

Erstellen Sie als Nächstes eine zusätzliche Konfiguration, um die max_body_size auf nginx zu erhöhen. Dadurch können Sie Docker-Images mit einer maximalen Größe von 2 GB hochladen.

vim-additional.conf

Konfiguration unten einfügen.

client_max_body_size 2G;

Speichern und schließen.

- SSL-Zertifikat und Basisauthentifizierung konfigurieren

Kopieren Sie die SSL-Zertifikatsdateien Ihrer Domain in das Verzeichnis „ssl“.

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

Gehen Sie nun in das Verzeichnis ‚auth‘ und erzeugen Sie die neue Passwortdatei ‚registry.passwd‘.

CD-Authentifizierung/

Generieren Sie ein neues Passwort für den Benutzer hakase.

htpasswd -Bc registration.passwd hakase
GEBEN SIE DAS STARKE PASSWORT EIN

Und die Einrichtung der Umgebung für die Bereitstellung der privaten Docker-Registrierung wurde abgeschlossen.

Unten ist der Screenshot unserer Umgebungsdateien und -verzeichnisse.

Baum

– Führen Sie die Docker-Registrierung aus

Führen Sie die Docker-Registrierung mit dem Befehl docker-compose unten aus.

docker-compose up -d

Und Sie erhalten das Ergebnis wie folgt.

Stellen Sie danach sicher, dass die Registrierung und der Nginx-Dienst betriebsbereit sind. Überprüfen Sie dies mit dem folgenden Befehl.

docker-compose ps
netstat -plntu

Und Ihnen wird angezeigt, dass der Dienst „registry“ auf Port „5000“ ausgeführt wird, und der Dienst „nginx“ zeigt die HTTP- und HTTPS-Ports wie folgt an.

Schritt 4 – Testen

Bevor wir unsere private Docker-Registrierung testen, müssen wir das Root-CA-Zertifikat zum Docker selbst und zum System hinzufügen.

Wenn Sie das PEM-Dateizertifikat verwenden, exportieren Sie es mit dem OpenSSL-Befehl in die .crt-Datei.

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

Erstellen Sie nun ein neues Verzeichnis für das Docker-Zertifikat und kopieren Sie das Root-CA-Zertifikat hinein.

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

Erstellen Sie dann ein neues Verzeichnis „/usr/share/ca-certificate/extra“ und kopieren Sie das Root-CA-Zertifikat hinein.

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

Konfigurieren Sie danach das Paket „ca-certificate“ neu und starten Sie den Docker-Dienst neu.

dpkg-reconfigure ca-certificates
systemctl docker neu starten

- Docker-Image herunterladen

Laden Sie das neue Docker-Image mit dem folgenden Befehl herunter.

docker pull ubuntu:16.04

Wenn es fertig ist, markieren Sie das Image für die private Registrierung mit dem folgenden Befehl.

Docker-Image-Tag ubuntu:16.04 Registry.hakase-labs.io/ubuntu16

Überprüfen Sie erneut die Liste der Docker-Images auf dem System und Sie erhalten neue Images wie unten.

Docker-Images

- Bild in private lokale Registrierung übertragen

Melden Sie sich mit dem folgenden Befehl bei der privaten Docker-Registrierung an.

Docker-Login https://registry.hakase-labs.io/v2/

Geben Sie den Benutzernamen und das Passwort basierend auf der Datei „registry.htpasswd“ ein.

Überprüfen Sie nun die Verfügbarkeit des Docker-Images in der Registrierung.

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

Und es gibt kein Docker-Image in der Registrierung.

Pushen Sie jetzt unser benutzerdefiniertes Image in die private Docker-Registrierung.

docker push-registrierung.hakase-labs.io/ubuntu16

Überprüfen Sie es erneut und stellen Sie sicher, dass Sie das Docker-Image „ubuntu16“ im privaten Repository erhalten.

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

Und schließlich wurde die Installation und Konfiguration der privaten Docker-Registrierung mit Nginx und Basisauthentifizierung erfolgreich abgeschlossen.


Ubuntu
  1. So installieren Sie Docker unter Ubuntu 22.04 / 20.04 LTS

  2. So richten Sie eine private Docker-Registrierung in Kubernetes (k8s) ein

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

  4. So richten Sie den Rsyslog-Server unter Ubuntu 18.04 LTS ein

  5. So richten Sie Elasticsearch unter Ubuntu 18.04 und 16.04 LTS ein

So installieren Sie Docker unter Ubuntu 18.04 LTS

So richten Sie die UFW-Firewall unter Ubuntu 18.04 LTS ein

So richten Sie die UFW-Firewall unter Ubuntu 20.04 LTS ein

So installieren Sie Docker unter Ubuntu 20.04 LTS

So installieren Sie Kitematic unter Ubuntu 20.04 LTS

So erstellen Sie eine private Docker-Registrierung unter Ubuntu Linux