Docker Hub-Remote-Repository erstellen
Erstellen Sie ein Remote-Repository, das als Proxy für Docker Hub dient.
Hinweis
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Secret Manager APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Secret Manager APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- Erstellen Sie ein Docker Hub-Konto.
Erforderliche Rollen
Um die Berechtigungen zu erhalten, die Sie zum Erstellen eines Docker Hub-Remote-Repositorys benötigen, bitten Sie Ihren Administrator, Ihnen folgenden IAM-Rollen:
-
So erstellen Sie Remote-Repositories und gewähren Zugriff auf einzelne Repositories:
Artifact Registry-Administrator (
roles/artifactregistry.admin
) für das Projekt -
So erstellen und verwalten Sie Secrets:
Secret Manager-Administrator (
roles/secretmanager.admin
) für das Projekt
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können 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. Dort sind Docker und die Google Cloud CLI, die primäre Befehlszeile für Google Cloud, vorinstalliert.
- Lokale Shell
- Wenn Sie lieber Ihre lokale Shell verwenden möchten, müssen Sie Docker installieren und gcloud CLI in Ihrer Umgebung verwenden.
Cloud Shell starten
So starten Sie Cloud Shell:
Rufen Sie die Google Cloud Console auf.
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
So installieren Sie die gcloud CLI und Docker:
Installieren Sie das gcloud-CLI. So aktualisieren Sie eine führen Sie den Befehl
gcloud components update
aus.Installieren Sie Docker, falls es noch nicht installiert ist.
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 auf einer virtuellen Maschine als Root-Nutzer 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 Ihr Nutzername ist.
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.
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 zu verhindern, dass ein nicht authentifiziertes Docker Hub-Kontingent verwendet wird, empfehlen wir, sich bei der Verwendung von Remote-Repositories bei Docker Hub zu authentifizieren. Remote-Repositories können Sie Ihren Docker Hub-Nutzernamen und ein persönliches Zugriffstoken hinzufügen, ein Secret zur Authentifizierung bei Docker Hub.
Persönliches Docker Hub-Zugriffstoken erstellen
- Melden Sie sich in Docker Hub an.
- Erstellen Sie ein persönliches Zugriffstoken mit Lesezugriffsberechtigungen.
Kopieren Sie das Zugriffstoken.
Speichern Sie das Zugriffstoken in einer Textdatei in Ihrer lokalen oder Cloud Shell.
Persönliches Zugriffstoken geheim speichern
Console
-
Rufen Sie in der Google Cloud Console die Seite Secret Manager auf.
-
Klicken Sie auf der Seite Secret Manager auf Secret erstellen.
-
Geben Sie auf der Seite Secret erstellen unter Name den Namen
my-secret
ein. -
Geben Sie im Feld Secret-Wert Ihr persönliches Docker Hub-Zugriffstoken ein.
-
Lassen Sie den Abschnitt Regionen unverändert.
-
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.
Gewähren Sie dem Artifact Registry-Dienstkonto Zugriff auf Ihr Secret
Console
-
Rufen Sie in der Google Cloud Console die Seite Secret Manager auf.
-
Klicken Sie auf der Seite Secret Manager auf das Kästchen neben
my-secret
. -
Falls das Fenster noch nicht geöffnet ist, klicken Sie auf Infofeld ansehen, um es zu öffnen.
-
Klicken Sie im Infofeld auf Hauptkonto hinzufügen.
-
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.
-
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.
-
-
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.
-
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 ein Artifact Registry-Remote-Repository mit dem Namen quickstart-docker-hub-remote
am Speicherort us-central1
mit Ihren Docker Hub-Anmeldedaten. 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 Repository-Namen müssen 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. So rufen Sie eine Liste auf: der unterstützten Standorte führen Sie den Befehlgcloud artifacts locations list
aus."Remote Docker repository"
ist die optionale Beschreibung Ihres Repositorys. Geben Sie keine sensiblen Daten an, da Repository-Beschreibungen nicht verschlüsselt."Docker Hub"
ist die optionale Beschreibung für Die Konfiguration des externen Repositorys für dieses Remote-Repository.DOCKER-HUB
legt das Remote-Repository dem öffentlichen Docker Hub vor vorgelagerte Elemente.- USERNAME ist Ihr Docker Hub-Nutzername.
projects/PROJECT/secrets/my-secret/versions/1
ist die Secret-Version, die Sie zum Speichern Ihres persönlichen Docker Hub-Zugriffs erstellt haben Token.
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.
Melden Sie sich in der gcloud CLI als der Nutzer an, der Docker-Befehle ausführt.
gcloud auth login
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 Remote-Repository abrufen
Melden Sie sich in der gcloud CLI als der Nutzer an, der Docker-Befehle ausführt.
gcloud auth login
Mit dem folgenden Befehl können Sie ein Image von Docker Hub auf Ihren Computer und in Ihr Remote-Repository herunterladen:
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 Docker-Repository die Sie erstellt haben.- 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 von Docker Hub inquickstart-docker-hub-remote
.latest
ist die getaggte Image-Version, die Sie aus Docker Hub abrufen möchten.
Das Image wird auf Ihren Computer heruntergeladen und im Remote-Repository im Cache gespeichert. Wenn Sie dasselbe getaggte Bild noch einmal abrufen, wird es von Ihrer Fernbedienung abgerufen. zu erstellen. Ihre Docker Hub-Anmeldedaten werden verwendet.
Liste der in Ihrem Remote-Repository gespeicherten Artefakte auflisten:
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 in dieser Anleitung verwendeten Ressourcen in Rechnung gestellt werden:
Repository löschen
Wenn Sie Ihr Projekt behalten und nur die Repository-Ressource löschen möchten, folgen Sie die Schritte in diesem Abschnitt. Wenn Sie Ihr gesamtes Projekt löschen möchten, folgen Sie der Anleitung. die Schritte unter Projekt löschen
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
Öffnen Sie in der Cloud Console die Seite Repositories.
Wählen Sie in der Repository-Liste das Repository
quickstart-docker-hub-remote
aus.Klicken Sie auf Löschen.
gcloud
Um das Repository quickstart-docker-hub-remote
zu löschen, führen Sie folgenden Befehl aus:
gcloud artifacts repositories delete quickstart-docker-hub-remote \ --location=us-central1
Projekt löschen
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Nächste Schritte
- Informationen zu den verschiedenen Repository-Modi von Artifact Registry.
- Weitere Informationen zu Artifact Registry-Remote-Repositories
- Weitere Informationen zu CI/CD