Docker Registry · 13 min read · Oct 05, 2025

So richten Sie ein privates Docker-Registry auf Ubuntu 22.04 ein

Wenn Sie für eine Organisation arbeiten und Ihre Docker-Images intern für eine schnelle Bereitstellung aufbewahren möchten, ist das Hosting eines privaten Docker-Repositorys perfekt. Ein privates Docker-Registry ermöglicht es Ihnen, Ihre Bildverteilungspipeline zu besitzen und eine engere Kontrolle über die Bildspeicherung und -verteilung zu haben. Sie können Ihr Registry in Ihr CI/CD-System integrieren, um Ihren Workflow zu verbessern.

Dieses Tutorial zeigt Ihnen, wie Sie ein privates Docker-Registry auf einem Ubuntu 22.04-Server einrichten und verwenden, wobei Amazon S3 als Speicherort verwendet wird.

Voraussetzungen

  • Zwei Linux-Server mit Ubuntu 22.04. Ein Server fungiert als Registry-Host, während der andere als Client verwendet wird, um Anfragen zu senden und Bilder vom Host zu empfangen.
  • Ein registrierter Domainname, der auf den Host-Server zeigt. Wir verwenden registry.example.com für unser Tutorial.
  • Ein Nicht-Root-Benutzer mit Sudo-Rechten auf beiden Maschinen.
  • Stellen Sie sicher, dass alles aktualisiert ist.
    $ sudo apt update
    $ sudo apt upgrade
  • Einige Pakete, die Ihr System benötigt.
    $ sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y
    Einige dieser Pakete sind möglicherweise bereits auf Ihrem System installiert.

Schritt 1 - Firewall konfigurieren

Der erste Schritt besteht darin, die Firewall zu konfigurieren. Ubuntu wird standardmäßig mit ufw (Uncomplicated Firewall) geliefert.

Überprüfen Sie, ob die Firewall aktiv ist.

$ sudo ufw status

Sie sollten die folgende Ausgabe erhalten.

Status: inactive

Erlauben Sie den SSH-Port, damit die Firewall die aktuelle Verbindung beim Aktivieren nicht unterbricht.

$ sudo ufw allow OpenSSH

Erlauben Sie auch die HTTP- und HTTPS-Ports.

$ sudo ufw allow http
$ sudo ufw allow https

Aktivieren Sie die Firewall

$ sudo ufw enable
Befehl kann bestehende SSH-Verbindungen stören. Mit der Operation fortfahren (y|n)? y
Firewall ist aktiv und beim Systemstart aktiviert

Überprüfen Sie den Status der Firewall erneut.

$ sudo ufw status

Sie sollten eine ähnliche Ausgabe sehen.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443                        ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

Schritt 2 - Docker und Docker Compose installieren

Dieser Schritt ist sowohl auf dem Server als auch auf den Client-Maschinen erforderlich.

Ubuntu 22.04 wird mit einer älteren Version von Docker ausgeliefert. Um die neueste Version zu installieren, importieren Sie zunächst den Docker GPG-Schlüssel.

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

Erstellen Sie eine Docker-Repository-Datei.

$ echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Aktualisieren Sie die System-Repository-Liste.

$ sudo apt update

Installieren Sie die neueste Version von Docker.

$ sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Überprüfen Sie, ob es läuft.

$ sudo systemctl status docker
? docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2023-04-13 09:37:09 UTC; 3min 47s ago
TriggeredBy: ? docker.socket
       Docs: https://docs.docker.com
   Main PID: 2106 (dockerd)
      Tasks: 7
     Memory: 26.0M
        CPU: 267ms
     CGroup: /system.slice/docker.service
             ??2106 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Standardmäßig benötigt Docker Root-Rechte. Wenn Sie vermeiden möchten, bei jedem Ausführen des docker-Befehls sudo zu verwenden, fügen Sie Ihren Benutzernamen zur docker-Gruppe hinzu.

$ sudo usermod -aG docker $(whoami)

Sie müssen sich vom Server abmelden und wieder als derselbe Benutzer anmelden, um diese Änderung zu aktivieren, oder den folgenden Befehl verwenden.

$ su - ${USER}

Bestätigen Sie, dass Ihr Benutzer zur Docker-Gruppe hinzugefügt wurde.

$ groups
navjot wheel docker

Schritt 3 - Docker Registry konfigurieren

Benutzerverzeichnisse erstellen

Erstellen Sie ein Verzeichnis für die Registry-Konfiguration.

$ mkdir ~/docker-registry

Wechseln Sie in das Verzeichnis docker-registry.

$ cd ~/docker-registry

Erstellen Sie ein Verzeichnis, um das HTTP-Authentifizierungspasswort, Nginx-Konfigurationsdateien und SSL-Zertifikate zu speichern.

$ mkdir auth

Erstellen Sie ein weiteres Verzeichnis, um Nginx-Protokolle zu speichern.

$ mkdir logs

Amazon S3-Bucket erstellen

Sie können die Registry-Daten und die Bilder auf Ihrem Server speichern oder einen Cloud-Hosting-Dienst verwenden. Für unser Tutorial verwenden wir den Amazon S3-Cloud-Service.

Der nächste Schritt besteht darin, die Konfigurationsdatei mit einigen wichtigen Einstellungen einzurichten. Diese Einstellungen können auch in der docker-compose.yml-Datei definiert werden, aber eine separate Datei zu haben, ist viel besser.

Erstellen Sie einen Bucket mit den folgenden Einstellungen.

  • ACL sollte deaktiviert sein.
  • Der öffentliche Zugriff auf den Bucket sollte deaktiviert sein.
  • Die Bucket-Versionierung sollte deaktiviert sein.
  • Aktivieren Sie die Bucket-Verschlüsselung mit von Amazon S3 verwalteten Schlüsseln. (SSE-S3)
  • Objektverriegelung sollte deaktiviert sein.

Erstellen Sie einen IAM-Benutzer mit der folgenden Richtlinie.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket",
        "s3:GetBucketLocation",
        "s3:ListBucketMultipartUploads"
      ],
      "Resource": "arn:aws:s3:::S3_BUCKET_NAME"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:DeleteObject",
        "s3:ListMultipartUploadParts",
        "s3:AbortMultipartUpload"
      ],
      "Resource": "arn:aws:s3:::S3_BUCKET_NAME/*"
    }
  ]
}

Ersetzen Sie S3_BUCKET_NAME durch den Namen Ihres S3-Buckets.

Notieren Sie sich den geheimen Schlüssel, den geheimen Wert und die Bucket-Region Ihres Buckets, die später verwendet werden.

Docker Compose-Datei erstellen

Erstellen Sie die docker-compose.yml-Datei und öffnen Sie sie zur Bearbeitung.

$ nano docker-compose.yml

Fügen Sie den folgenden Code ein.

services:
  registry:
    image: registry:2
    restart: always
    environment:
      - REGISTRY_STORAGE=s3
      - REGISTRY_STORAGE_S3_REGION=us-west-2
      - REGISTRY_STORAGE_S3_BUCKET=hf-docker-registry
      - REGISTRY_STORAGE_S3_ENCRYPT=true
      - REGISTRY_STORAGE_S3_CHUNKSIZE=5242880
      - REGISTRY_STORAGE_S3_SECURE=true
      - REGISTRY_STORAGE_S3_ACCESSKEY=AKIA3FIG4NVFNXKQXMSJ
      - REGISTRY_STORAGE_S3_SECRETKEY=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
      - REGISTRY_STORAGE_S3_V4AUTH=true
      - REGISTRY_STORAGE_S3_ROOTDIRECTORY=/image-registry
      - REGISTRY_STORAGE_CACHE_BLOBDESCRIPTOR=inmemory
      - REGISTRY_HEALTH_STORAGEDRIVER_ENABLED=false
  nginx:
    image: "nginx:alpine"
    ports:
      - 443:443
    links:
      - registry:registry
    volumes:
      - ./auth:/etc/nginx/conf.d
      - ./auth/nginx.conf:/etc/nginx/nginx.conf:ro
      - ./logs:/var/log/nginx
      - /etc/letsencrypt:/etc/letsencrypt

Speichern Sie die Datei, indem Sie Ctrl + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Lassen Sie uns durchgehen, was wir in unserer Compose-Datei eingerichtet haben.

  1. Der erste Schritt besteht darin, das neueste Image der Version 2 des Docker-Registry vom Hub abzurufen. Wir verwenden nicht das neueste Tag, da dies bei einem größeren Versionsupgrade Probleme verursachen kann. Es auf 2 zu setzen, ermöglicht es Ihnen, alle 2.x-Updates abzurufen und zu verhindern, dass Sie auf die nächste Hauptversion automatisch aktualisiert werden, die brechende Änderungen einführen kann.
  2. Der Registry-Container ist so eingestellt, dass er im Falle eines Fehlers oder eines unerwarteten Herunterfahrens immer neu gestartet wird.
  3. Wir haben verschiedene Umgebungsvariablen für die Amazon S3-Speicherung festgelegt. Lassen Sie uns diese schnell durchgehen. - REGISTRY_STORAGE legt den Typ des Speichers fest. Wir haben s3 ausgewählt, da wir Amazon S3 verwenden.
  • REGISTRY_STORAGE_S3_REGION legt die Region Ihres S3-Buckets fest.
  • REGISTRY_STORAGE_S3_BUCKET legt den Namen Ihres S3-Buckets fest.
  • REGISTRY_STORAGE_S3_ENCRYPT - setzen Sie es auf true, wenn Sie die Bucket-Verschlüsselung aktiviert haben.
  • REGISTRY_STORAGE_S3_CHUNKSIZE legt die Größe der Upload-Chunks fest. Es sollte größer als 5 MB (5 1024 1024) sein.
  • REGISTRY_STORAGE_S3_SECURE - setzen Sie es auf true, wenn Sie HTTPS verwenden möchten.
  • REGISTRY_STORAGE_S3_ACCESSKEY und REGISTRY_STORAGE_S3_SECRETKEY - Benutzeranmeldeinformationen, die Sie nach der Erstellung Ihres IAM-Benutzers erhalten haben.
  • REGISTRY_STORAGE_S3_V4AUTH - setzen Sie es auf true, wenn Sie v4 der AWS-Authentifizierung verwenden. Wenn Sie Fehler im Zusammenhang mit der S3-Anmeldung erhalten, setzen Sie es auf false.
  • REGISTRY_STORAGE_S3_ROOTDIRECTORY - legt das Stammverzeichnis in Ihrem Bucket fest, unter dem Ihre Registry-Daten gespeichert werden.
  • REGISTRY_STORAGE_CACHE_BLOBDESCRIPTOR - legt den Speicherort für den Cache fest. In unserem Fall speichern wir es im Speicher. Sie können es auch so einstellen, dass es Redis verwendet.
  • REGISTRY_HEALTH_STORAGEDRIVER_ENABLED - Setzen Sie es auf false, um den Dienst zur Überprüfung der Speicherintegrität des Registrys zu deaktivieren. Es gibt einen Fehler mit der Registry, der Probleme verursachen kann, wenn Sie es nicht auf false setzen.
  1. Docker-Registry kommuniziert über Port 5000, den wir auf unserem Server für Docker freigegeben haben.
  2. ./auth:/etc/nginx/conf.d-Mapping stellt sicher, dass alle Nginx-Einstellungen im Container verfügbar sind.
  3. ./auth/nginx.conf:/etc/nginx/nginx.conf:ro mappt die Nginx-Einstellungsdatei vom System in den Container im Nur-Lese-Modus.
  4. ./logs:/var/log/nginx ermöglicht den Zugriff auf die Nginx-Protokolle auf dem System, indem es auf das Nginx-Protokollverzeichnis im Container abgebildet wird.
  5. Die Einstellungen des Docker-Registrys werden in der Datei /etc/docker/registry/config.yml im Container gespeichert, und wir haben sie auf die config.yml-Datei im aktuellen Verzeichnis abgebildet, die wir im nächsten Schritt erstellen werden.

Authentifizierung einrichten

Um die HTTP-Authentifizierung einzurichten, müssen Sie das Paket httpd-tools installieren.

$ sudo apt install apache2-utils -y

Erstellen Sie die Passwortdatei im Verzeichnis ~/docker-registry/auth.

$ htpasswd -Bc ~/docker-registry/auth/nginx.htpasswd user1
Neues Passwort:
Neues Passwort erneut eingeben:
Passwort für Benutzer user1 hinzufügen

Das Flag -c weist den Befehl an, eine neue Datei zu erstellen, und das Flag -B wird verwendet, um den von Docker unterstützten bcrypt-Algorithmus zu verwenden. Ersetzen Sie user1 durch einen Benutzernamen Ihrer Wahl.

Wenn Sie weitere Benutzer hinzufügen möchten, führen Sie den Befehl erneut aus, jedoch ohne das Flag -c.

$ htpasswd -B ~/docker-registry/auth/registry.password user2

Jetzt wird die Datei für die Authentifizierung im Registry-Container abgebildet.

Schritt 4 - SSL installieren

Wir müssen Certbot installieren, um das SSL-Zertifikat zu generieren. Sie können Certbot entweder über das Repository von Ubuntu installieren oder die neueste Version mit dem Snapd-Tool herunterladen. Wir verwenden die Snapd-Version.

Ubuntu 22.04 wird standardmäßig mit Snapd installiert. Führen Sie die folgenden Befehle aus, um sicherzustellen, dass Ihre Version von Snapd auf dem neuesten Stand ist.

$ sudo snap install core && sudo snap refresh core

Installieren Sie Certbot.

$ sudo snap install --classic certbot

Verwenden Sie den folgenden Befehl, um sicherzustellen, dass der Certbot-Befehl ausgeführt werden kann, indem Sie einen symbolischen Link zum Verzeichnis /usr/bin erstellen.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Führen Sie den folgenden Befehl aus, um ein SSL-Zertifikat zu generieren.

$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d registry.example.com

Der obige Befehl lädt ein Zertifikat in das Verzeichnis /etc/letsencrypt/live/registry.example.com auf Ihrem Server herunter.

Generieren Sie ein Diffie-Hellman-Gruppe-Zertifikat.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Überprüfen Sie den Zeitplan für den Certbot-Erneuerungsdienst.

$ sudo systemctl list-timers

Sie finden snap.certbot.renew.service als einen der Dienste, die geplant sind.

NEXT                        LEFT          LAST                        PASSED        UNIT                      ACTIVATES
.....
Sun 2023-04-14 00:00:00 UTC 19min left    Sat 2023-02-25 18:04:05 UTC n/a          snap.certbot.renew.timer  snap.certbot.renew.service
Sun 2023-04-14 00:00:20 UTC 19min left    Sat 2023-02-25 10:49:23 UTC 14h ago      apt-daily-upgrade.timer   apt-daily-upgrade.service
Sun 2023-04-14 00:44:06 UTC 3h 22min left Sat 2023-02-25 20:58:06 UTC 7h ago       apt-daily.timer           apt-daily.service

Führen Sie einen Testlauf des Prozesses durch, um zu überprüfen, ob die SSL-Erneuerung einwandfrei funktioniert.

$ sudo certbot renew --dry-run

Wenn Sie keine Fehler sehen, sind Sie bereit. Ihr Zertifikat wird automatisch erneuert.

Kopieren Sie die Dhparam-Datei in den Container

Kopieren Sie das Diffie-Hellman-Gruppe-Zertifikat in das Verzeichnis ~/docker-registry/auth, das in den Container abgebildet wird.

$ sudo cp /etc/ssl/certs/dhparam.pem ~/docker-registry/auth

Schritt 5 - Nginx konfigurieren

Der nächste Schritt besteht darin, den Nginx-Server als Front-End-Proxy für den Docker-Registry-Server zu konfigurieren. Die Docker-Registry verfügt über einen integrierten Server, der auf Port 5000 arbeitet. Wir setzen ihn hinter Nginx.

Erstellen und öffnen Sie die Datei ~/docker-registry/auth/nginx.conf zur Bearbeitung.

$ sudo nano ~/docker-registry/auth/nginx.conf

Fügen Sie den folgenden Code ein.

events {
    worker_connections  1024;
}

http {

  upstream docker-registry {
    server registry:5000;
  }

  ## Setzen Sie eine Variable, um uns zu helfen zu entscheiden, ob wir den
  ## 'Docker-Distribution-Api-Version'-Header hinzufügen müssen.
  ## Die Registry setzt immer diesen Header.
  ## Im Fall von Nginx, das Authentifizierung durchführt, ist der Header nicht gesetzt,
  ## da Nginx vor dem Proxying authentifiziert.
  map $upstream_http_docker_distribution_api_version $docker_distribution_api_version {
    '' 'registry/2.0';
  }

  server {
    listen 443 ssl http2;
    server_name registry.example.com;

    # SSL
    ssl_certificate /etc/letsencrypt/live/registry.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/registry.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/registry.example.com/chain.pem;

    access_log  /var/log/nginx/registry.access.log;
    error_log   /var/log/nginx/registry.error.log;

    # Empfehlungen von https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers on;
    ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
    ssl_session_cache shared:SSL:10m;
    ssl_dhparam /etc/nginx/conf.d/dhparam.pem;
    resolver 8.8.8.8;

    # Deaktivieren Sie alle Limits, um HTTP 413 für große Bild-Uploads zu vermeiden
    client_max_body_size 0;

    # erforderlich, um HTTP 411 zu vermeiden: siehe Issue #1486 (https://github.com/moby/moby/issues/1486)
    chunked_transfer_encoding on;

    location /v2/ {
      # Verhindern Sie Verbindungen von Docker 1.5 und früher
      # Docker vor 1.6.0 hat den User-Agent beim Ping nicht richtig gesetzt, fangen Sie "Go *"-User-Agents
      if ($http_user_agent ~ "^(docker\/1\.(3|4|5(?!\.[0-9]-dev))|Go ).*$" ) {
        return 404;
      }

      # Um die grundlegende Authentifizierung für v2 hinzuzufügen, verwenden Sie die auth_basic-Einstellung.
      auth_basic "Registry realm";
      auth_basic_user_file /etc/nginx/conf.d/nginx.htpasswd;

      ## Wenn $docker_distribution_api_version leer ist, wird der Header nicht hinzugefügt.
      ## Siehe die oben definierte Map-Direktive, wo diese Variable definiert ist.
      add_header 'Docker-Distribution-Api-Version' $docker_distribution_api_version always;

      proxy_pass                          http://docker-registry;
      proxy_set_header  Host              $http_host;   # erforderlich für den Docker-Client
      proxy_set_header  X-Real-IP         $remote_addr; # echte IP des Clients weitergeben
      proxy_set_header  X-Forwarded-For   $proxy_add_x_forwarded_for;
      proxy_set_header  X-Forwarded-Proto $scheme;
      proxy_read_timeout                  900;
    }
  }
}

Speichern Sie die Datei, indem Sie Ctrl + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden, nachdem Sie fertig sind.

Schritt 6 - Docker Registry starten

Wechseln Sie in das Verzeichnis der Docker Registry.

$ cd ~/docker-registry

Starten Sie den Docker-Container.

$ docker compose up -d

Überprüfen Sie den Status der Container.

$ docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED              STATUS              PORTS                                      NAMES
3328b7e36bb2   nginx:alpine   "/docker-entrypoint.…"   Vor etwa einer Minute   Vor 3 Sekunden        80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp   docker-registry-nginx-1
bf7cdfc0e013   registry:2     "/entrypoint.sh /etc…"   Vor etwa einer Minute   Vor etwa einer Minute   5000/tcp                                 docker-registry-registry-1

Melden Sie sich bei der Docker-Registry an.

$ docker login -u=user1 -p=password https://registry.example.com

Sie erhalten die folgende Ausgabe.

WARNUNG! Die Verwendung von --password über die CLI ist unsicher. Verwenden Sie --password-stdin.
WARNUNG! Ihr Passwort wird unverschlüsselt in /home/username/.docker/config.json gespeichert.
Konfigurieren Sie einen Anmeldehelfer, um diese Warnung zu entfernen. Siehe
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Anmeldung erfolgreich

Sie können auch die URL https://registry.example.com/v2/ in Ihrem Browser öffnen, und es wird nach einem Benutzernamen und Passwort gefragt. Sie sollten eine leere Seite mit {} sehen.

Sie können die URL im Terminal mit curl überprüfen.

$ curl -u user1 -X GET https://registry.example.com/v2/
Geben Sie das Host-Passwort für den Benutzer 'user1' ein:
{}

Laden Sie das neueste Ubuntu-Docker-Image herunter.

$ docker pull ubuntu:latest

Taggen Sie dieses Image für das private Registry.

$ docker tag ubuntu:latest registry.example.com/ubuntu2204

Pushen Sie das Image in das Registry.

$ docker push registry.example.com/ubuntu2204

Überprüfen Sie, ob der Push erfolgreich war.

$ curl -u user1 -X GET https://registry.example.com/v2/_catalog
Geben Sie das Host-Passwort für den Benutzer 'user1' ein:
{"repositories":["ubuntu2204"]}

Geben Sie Ihr Nginx-Authentifizierungspasswort ein, wenn Sie dazu aufgefordert werden, und Sie sehen die Liste der über das Registry verfügbaren Repositories.

Melden Sie sich über das Terminal ab, um die Anmeldeinformationen zu löschen.

$ docker logout https://registry.example.com
Entfernen der Anmeldeinformationen für registry.example.com

Überprüfen Sie die Liste der derzeit verfügbaren Docker-Images zur Verwendung.

$ docker images
REPOSITORY                            TAG       IMAGE ID       CREATED       SIZE
registry                             2         8db46f9d7550   vor 2 Wochen   24.2MB
nginx                                alpine    8e75cbc5b25c   vor 2 Wochen   41MB
ubuntu                               latest    08d22c0ceb15   vor 5 Wochen   77.8MB
registry.example.com/ubuntu2204      latest    08d22c0ceb15   vor 5 Wochen   77.8MB

Schritt 7 - Greifen Sie auf das Docker-Registry von der Client-Maschine zu und verwenden Sie es

Melden Sie sich bei Ihrem Client-Server an. In Schritt 1 haben wir Docker auf der Client-Maschine installiert.

Melden Sie sich bei der privaten Docker-Registry von der Client-Maschine an.

$ docker login -u=user1 -p=password https://registry.example.com

Ziehen Sie das Ubuntu-Image aus dem Registry.

$ docker pull registry.example.com/ubuntu2204

Listen Sie alle Images auf Ihrer Client-Maschine auf.

$ docker images
REPOSITORY                        TAG        IMAGE ID       CREATED         SIZE
registry.example.com/ubuntu2204   latest     08d22c0ceb15   vor 5 Wochen   77.8MB

Erstellen und starten Sie einen Container mit dem heruntergeladenen Image.

$ docker run -it registry.example.com/ubuntu2204 /bin/bash

Sie werden in die Shell innerhalb des Ubuntu-Containers eingeloggt.

root@647899f255db:

Führen Sie den folgenden Befehl aus, um die Linux-Version zu überprüfen.

root@a2da49fdbea9$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.2 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.2 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy

Jetzt können Sie Ihr Docker-Registry von Ihren Client-Maschinen aus verwenden.

Fazit

Damit endet unser Tutorial zur Einrichtung eines privaten Docker-Registrys auf einem Ubuntu 22.04-Server, das Amazon S3 als Speicher verwendet. Wenn Sie Fragen haben, posten Sie diese in den Kommentaren unten.

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.