Docker Hub-Remote-Repository erstellen

Erstellen Sie ein Remote-Repository, das als Proxy für Docker Hub fungiert.

Hinweise

  1. Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  4. Artifact Registry, Secret Manager APIs aktivieren.

    Aktivieren Sie die APIs

  5. Installieren Sie die Google Cloud CLI.
  6. Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  9. Artifact Registry, Secret Manager APIs aktivieren.

    Aktivieren Sie die APIs

  10. Installieren Sie die Google Cloud CLI.
  11. Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  12. Erstellen Sie ein Docker Hub-Konto.

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zu gewähren, um die Berechtigungen zu erhalten, die Sie zum Erstellen eines Docker Hub-Remote-Repositorys benötigen:

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.

Möglicherweise können Sie die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

Shell auswählen

Sie können diese Kurzanleitung entweder in Cloud Shell oder in Ihrer lokalen Shell ausführen.

Cloud Shell
Cloud Shell ist eine Shell-Umgebung für die Verwaltung von Ressourcen, die in Google Cloud gehostet werden. Docker und die Google Cloud CLI, die primäre Befehlszeile für Google Cloud, sind vorinstalliert.
Lokale Shell
Wenn Sie Ihre lokale Shell bevorzugen, müssen Sie Docker und die gcloud CLI in Ihrer Umgebung installieren.

Cloud Shell starten

So starten Sie Cloud Shell:

  1. Rufen Sie die Google Cloud Console auf.

    Google Cloud Console

  2. Klicken Sie auf die Schaltfläche Cloud Shell aktivieren:  .

In einem Frame im unteren Teil der Console wird eine Cloud Shell-Sitzung geöffnet. Mit dieser Shell führen Sie gcloud-Befehle aus.

Lokale Shell einrichten

Führen Sie die folgenden Schritte aus, um die gcloud CLI und Docker zu installieren:

  1. Installieren Sie das gcloud-CLI. Führen Sie den Befehl gcloud components update aus, um eine vorhandene Installation zu aktualisieren.

  2. Installieren Sie Docker, falls es noch nicht installiert ist.

  3. Docker benötigt für die Interaktion mit Registries Zugriff. Fügen Sie unter Linux oder Windows den Nutzer hinzu, mit dem Sie Docker-Befehle in der Docker-Sicherheitsgruppe ausführen. Dieser Schritt ist unter macOS nicht erforderlich, da Docker Desktop als Root-Nutzer auf einer virtuellen Maschine ausgeführt wird.

    Linux

    Die Docker-Sicherheitsgruppe heißt docker. Führen Sie den folgenden Befehl aus, um Ihren Nutzernamen hinzuzufügen:

    sudo usermod -a -G docker ${USER}
    

    Windows

    Die Docker-Sicherheitsgruppe heißt docker-users. Führen Sie den folgenden Befehl aus, um einen Nutzer über die Administrator-Eingabeaufforderung hinzuzufügen:

    net localgroup docker-users DOMAIN\USERNAME /add
    

    Dabei gilt:

    • DOMAIN ist Ihre Windows-Domain.
    • USERNAME ist Ihr Nutzername.
  4. Melden Sie sich ab und wieder an, damit Änderungen an der Gruppenmitgliedschaft wirksam werden. Wenn Sie eine virtuelle Maschine verwenden, müssen Sie sie unter Umständen neu starten, damit die Mitgliedschaftsänderungen wirksam werden.

  5. Prüfen Sie mit dem folgenden Docker-Befehl, durch den die aktuelle Zeit und das aktuelle Datum zurückgegeben werden, ob Docker ausgeführt wird:

    docker run --rm busybox date
    

    Das Flag --rm löscht die Containerinstanz beim Beenden.

Docker Hub-Authentifizierung konfigurieren

Um die Verwendung eines nicht authentifizierten Docker Hub-Kontingents zu verhindern, sollten Sie sich bei Docker Hub authentifizieren, wenn Sie Remote-Repositories verwenden. Mit Remote-Repositories können Sie Ihren Docker Hub-Nutzernamen und ein persönliches Zugriffstoken hinzufügen, das als Secret gespeichert ist, um sich bei Docker Hub zu authentifizieren.

Persönliches Docker Hub-Zugriffstoken erstellen

  1. Melden Sie sich in Docker Hub an.
  2. Erstellen Sie ein persönliches Zugriffstoken mit schreibgeschützten Berechtigungen.
  3. Kopieren Sie das Zugriffstoken.

  4. Speichern Sie das Zugriffstoken in einer Textdatei in Ihrer lokalen Shell oder in Cloud Shell.

Persönliches Zugriffstoken geheim speichern

Console

  1. Rufen Sie in der Google Cloud Console die Seite Secret Manager auf.

    Zur Seite „Secret Manager“

  2. Klicken Sie auf der Seite Secret Manager auf Secret erstellen.

  3. Geben Sie auf der Seite Secret erstellen unter Name den Namen my-secret für Ihr Secret ein.

  4. Geben Sie im Feld Secret-Wert Ihr persönliches Docker Hub-Zugriffstoken ein.

  5. Lassen Sie den Abschnitt Regionen unverändert.

  6. Klicken Sie auf Secret erstellen.

gcloud-CLI

gcloud secrets create my-secret --data-file="/path/to/file.txt"

Dabei ist /path/to/file.txt der Speicherort der Textdatei mit Ihrem persönlichen Zugriffstoken.

Dem Artifact Registry-Dienstkonto Zugriff auf Ihr Secret gewähren

Console

  1. Rufen Sie in der Google Cloud Console die Seite Secret Manager auf.

    Zur Seite „Secret Manager“

  2. Klicken Sie auf der Seite Secret Manager auf das Kästchen neben my-secret.

  3. Falls das Fenster noch nicht geöffnet ist, klicken Sie auf Infofeld ansehen, um es zu öffnen.

  4. Klicken Sie im Infofeld auf Hauptkonto hinzufügen.

  5. Geben Sie im Textbereich Neue Hauptkonten die E-Mail-Adresse des Artifact Registry-Dienstkontos ein. Die E-Mail-Adresse des Artifact Registry-Dienstkontos ist so formatiert

    service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com

    Dabei ist PROJECT-NUMBER die Projektnummer.

    So finden Sie Ihre Projektnummer:

    • Rufen Sie in der Google Cloud Console die Seite Dashboard auf.

      Zur Seite „Dashboard“

    • Klicken Sie oben auf der Seite auf das Drop-down Auswählen aus.

    • Wählen Sie im angezeigten Fenster Auswählen aus Ihr Projekt aus.

      Die Projekt-ID und die Projektnummer werden auf der Dashboard-Karte Projektinformationen des Projekts angezeigt.

  6. Wählen Sie im Drop-down-Menü Rolle auswählen die Option Secret Manager und dann Zugriffsfunktion für Secret Manager-Secret aus.

gcloud-CLI

gcloud secrets add-iam-policy-binding my-secret \
    --member="serviceAccount:service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com" \
    --role="roles/secretmanager.secretAccessor"

Dabei ist PROJECT-NUMBER die Projektnummer Ihres Projekts.

So finden Sie Ihre Projektnummer:

  • Rufen Sie in der Google Cloud Console die Seite Dashboard auf.

    Zur Seite „Dashboard“

  • Klicken Sie oben auf der Seite auf das Drop-down Auswählen aus.

  • Wählen Sie im angezeigten Fenster Auswählen aus Ihr Projekt aus.

    Die Projekt-ID und die Projektnummer werden auf der Dashboard-Karte Projektinformationen des Projekts angezeigt.

Remote-Repository erstellen

Erstellen Sie mit Ihren Docker Hub-Anmeldedaten ein Artifact Registry-Remote-Repository namens quickstart-docker-hub-remote am Standort us-central1. Führen Sie dazu den folgenden Befehl aus:

gcloud artifacts repositories create quickstart-docker-hub-remote \
    --project=PROJECT_ID \
    --repository-format=DOCKER  \
    --location=us-central1 \
    --description="Remote Docker repository" \
    --mode=remote-repository \
    --remote-repo-config-desc="Docker Hub" \
    --remote-docker-repo=DOCKER-HUB \
    --remote-username=USERNAME \
    --remote-password-secret-version=projects/PROJECT/secrets/my-secret/versions/1

Wobei:

  • quickstart-docker-hub-remote ist der Name des Repositorys. Für jeden Repository-Standort in einem Projekt müssen Repository-Namen eindeutig sein.
  • PROJECT_ID ist die Projekt-ID. Wenn dieses Flag nicht angegeben ist, wird das aktuelle Projekt oder das Standardprojekt verwendet.
  • us-central1 ist der regionale oder multiregionale Standort für das Repository. Sie können dieses Flag weglassen, wenn Sie einen Standard-Speicherort festgelegt haben. Führen Sie den Befehl gcloud artifacts locations list aus, um eine Liste der unterstützten Standorte aufzurufen.
  • "Remote Docker repository" ist die optionale Beschreibung Ihres Repositorys. Geben Sie keine sensiblen Daten an, da Repository-Beschreibungen nicht verschlüsselt sind.
  • "Docker Hub" ist die optionale Beschreibung der externen Repository-Konfiguration für dieses Remote-Repository.
  • DOCKER-HUB legt das Remote-Repository vorgelagert auf den öffentlichen Docker Hub im Upstream fest.
  • USERNAME ist Ihr Docker Hub-Nutzername.
  • projects/PROJECT/secrets/my-secret/versions/1 ist die Secret-Version, die Sie zum Speichern Ihres persönlichen Zugriffstokens für Docker Hub erstellt haben.

Artifact Registry erstellt das Repository und fügt es der Liste der Repositories hinzu.

Docker-Authentifizierung konfigurieren

Bevor Sie Images hoch- oder herunterladen können, müssen Sie Docker so konfigurieren, dass die Google Cloud CLI zum Authentifizieren von Anfragen an Artifact Registry verwendet wird.

  1. Melden Sie sich in der gcloud CLI als der Nutzer an, der Docker-Befehle ausführen wird.

    gcloud auth login
    
  2. Um die Authentifizierung für Docker-Repositories in der Region us-central1 einzurichten, führen Sie folgenden Befehl aus:

    gcloud auth configure-docker us-central1-docker.pkg.dev
    

    Mit dem Befehl wird die Docker-Konfiguration aktualisiert. Sie können jetzt eine Verbindung zu Artifact Registry in Ihrem Google Cloud-Projekt herstellen, um Images zu übertragen und abzurufen.

Informationen zu anderen Authentifizierungsmethoden finden Sie unter Authentifizierungsmethoden.

Image in das Remote-Repository abrufen

  1. Melden Sie sich in der gcloud CLI als der Nutzer an, der Docker-Befehle ausführen wird.

    gcloud auth login
    
  2. Rufen Sie mit dem folgenden Befehl ein Image von Docker Hub auf Ihren Computer und in Ihr Remote-Repository ab:

    docker pull us-central1-docker.pkg.dev/PROJECT/quickstart-docker-hub-remote/busybox:latest
    

    Wobei:

    • us-central1 ist der Speicherort des Remote-Repositorys.
    • us-central1-docker.pkg.dev ist der Hostname für das von Ihnen erstellte Docker-Repository.
    • PROJECT ist Ihre Google Cloud-Projekt-ID. Wenn die Projekt-ID einen Doppelpunkt (:) enthält, finden Sie weitere Informationen unter Auf Domains beschränkte Projekte.
    • quickstart-docker-hub-remote ist die ID des von Ihnen erstellten Repositorys.
    • busybox ist der Name des Images, das Sie aus Docker Hub in quickstart-docker-hub-remote abrufen möchten.
    • latest ist die getaggte Image-Version, die Sie von Docker Hub abrufen möchten.

    Das Image wird auf Ihren Computer übertragen und im Remote-Repository zwischengespeichert. Wenn Sie dasselbe getaggte Image noch einmal abrufen, wird es aus Ihrem Remote-Repository abgerufen. Ihre Docker Hub-Anmeldedaten werden verwendet.

  3. Listen Sie die in Ihrem Remote-Repository gespeicherten Artefakte auf:

    gcloud artifacts packages list \
        --location=us-central1 \
        --repository=quickstart-docker-hub-remote
    

    Die Ausgabe sollte so aussehen:

    Listing items under project my-project, location us-central1, repository quickstart-docker-hub-remote.
    
    PACKAGE: busybox
    CREATE_TIME: 2023-06-19T18:59:09
    UPDATE_TIME: 2023-06-19T18:59:10
    

Bereinigen

Mit den folgenden Schritten vermeiden Sie, dass Ihrem Google Cloud-Konto die auf dieser Seite verwendeten Ressourcen in Rechnung gestellt werden:

Repository löschen

Wenn Sie Ihr Projekt beibehalten und nur die Repository-Ressource löschen möchten, führen Sie die Schritte in diesem Abschnitt aus. Wenn Sie Ihr gesamtes Projekt löschen möchten, führen Sie die Schritte unter Projekt löschen aus.

Prüfen Sie vor dem Entfernen des Repositorys, ob alle Images, die Sie beibehalten möchten, an einem anderen Speicherort verfügbar sind.

So löschen Sie das Repository:

Console

  1. Öffnen Sie in der Cloud Console die Seite Repositories.

    Zur Seite „Repositories“

  2. Wählen Sie in der Repository-Liste das Repository quickstart-docker-hub-remote aus.

  3. Klicken Sie auf Löschen.

gcloud

Führen Sie den folgenden Befehl aus, um das Repository quickstart-docker-hub-remote zu löschen:

gcloud artifacts repositories delete quickstart-docker-hub-remote \
    --location=us-central1

Projekt löschen

  1. Wechseln Sie in der Google Cloud Console zur Seite Ressourcen verwalten.

    Zur Seite „Ressourcen verwalten“

  2. Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
  3. Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.

Nächste Schritte