Docker Hub-Remote-Repository erstellen
Mit Artifact Registry-Remote-Repositories können Sie Container-Images von Docker Hub proxyn und im Cache speichern, um die Downloadlatenz zu verringern und nicht authentifizierte Ratenbeschränkungen zu vermeiden. In dieser Kurzanleitung konfigurieren Sie Docker Hub-Anmeldedaten in Secret Manager, erstellen ein Remote-Repository und laden ein Beispiel-Image herunter.
Hinweis
- Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie einfach 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Artifact Registry, Secret Manager APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Artifact Registry, Secret Manager APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init - Erstellen Sie ein Docker Hub-Konto.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen eines Docker Hub-Remote-Repositorys benötigen:
-
Zum Erstellen von Remote-Repositories und zum Gewähren des Zugriffs auf einzelne Repositories: Artifact Registry-Administrator (
roles/artifactregistry.admin) für das Projekt -
Zum Erstellen und Verwalten von Secrets:
Secret Manager Admin-Rolle (
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 Cloudgehostet werden. Dort sind Docker und die Google Cloud CLI, die primäre Befehlszeile für Google Cloud, 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:
Zur Google Cloud Console.
Klicken Sie auf den Button 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 die gcloud CLI. Führen Sie den Befehl
gcloud components updateaus, um eine vorhandene Installation zu aktualisieren.Installieren Sie Docker, falls es noch nicht installiert ist.
Docker benötigt privilegierten Zugriff, um mit Registries interagieren zu können. 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 /addDabei 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 dateDas Flag
--rmlöscht die Containerinstanz beim Beenden.
Docker Hub-Authentifizierung konfigurieren
Wenn Sie verhindern möchten, dass ein nicht authentifiziertes Docker Hub-Kontingent verwendet wird, empfehlen wir, sich bei Docker Hub zu 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 zum Authentifizieren bei Docker Hub gespeichert ist.
Persönliches Zugriffstoken für Docker Hub erstellen
- Melden Sie sich in Docker Hub an.
- Erstellen Sie ein persönliches Zugriffstoken mit Lesezugriff.
Kopieren Sie das Zugriffstoken.
Speichern Sie das Zugriffstoken in einer Textdatei auf Ihrem lokalen Computer oder in Cloud Shell.
Persönliches Zugriffstoken in einem Secret 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-secretfür das 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.
Dem Artifact Registry-Dienstkonto Zugriff auf Ihr Secret gewähren
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 die Drop-down-Liste 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 die Drop-down-Liste 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, indem Sie den folgenden Befehl ausführen:
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-remoteist der Name des Repositorys. Repository-Namen können für jeden Repository-Speicherort in einem Projekt nur einmal vorkommen.PROJECT_IDist die Projekt-ID. Wenn dieses Flag nicht angegeben ist, wird das aktuelle Projekt oder das Standardprojekt verwendet.us-central1ist 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 Befehlgcloud artifacts locations listaus, um eine Liste der unterstützten Standorte aufzurufen."Remote Docker repository"ist die optionale Beschreibung Ihres Repositorys. Geben Sie keine vertraulichen Daten an, da Repository-Beschreibungen nicht verschlüsselt sind."Docker Hub"ist die optionale Beschreibung für die Konfiguration des externen Repositorys für dieses Remote-Repository.- Mit
DOCKER-HUBwird das Remote-Repository auf den öffentlichen Docker Hub-Upstream festgelegt. - USERNAME ist Ihr Docker Hub-Nutzername.
projects/PROJECT/secrets/my-secret/versions/1ist die Secret-Version, die Sie zum Speichern Ihres persönlichen Docker Hub-Zugriffstokens erstellt haben.
Artifact Registry erstellt das Repository und fügt es der Liste der Repositorys hinzu.
Docker-Authentifizierung konfigurieren
Bevor Sie Images übertragen oder abrufen 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 loginUm die Authentifizierung für Docker-Repositories in der Region
us-central1einzurichten, führen Sie folgenden Befehl aus:gcloud auth configure-docker us-central1-docker.pkg.devDurch den 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 Ihr Remote-Repository herunterladen
Melden Sie sich in der gcloud CLI als der Nutzer an, der Docker-Befehle ausführt.
gcloud auth loginMit dem folgenden Befehl können Sie ein Image aus Docker Hub auf Ihren Computer und in Ihr Remote-Repository herunterladen:
docker pull us-central1-docker.pkg.dev/PROJECT/quickstart-docker-hub-remote/busybox:latestWobei:
us-central1ist der Speicherort des Remote-Repositorys.us-central1-docker.pkg.devist der Hostname für das von Ihnen erstellte Docker-Repository.- PROJECT ist Ihre Google Cloud
Projekt-ID.
Wenn Ihre Projekt-ID einen Doppelpunkt (
:) enthält, lesen Sie den Abschnitt Projekte mit Domainbereich. quickstart-docker-hub-remoteist die ID des von Ihnen erstellten Repositorys.busyboxist der Name des Images, das Sie aus Docker Hub inquickstart-docker-hub-remoteabrufen möchten.latestist die getaggte Image-Version, die Sie aus Docker Hub abrufen möchten.
Das Image wird auf Ihren Computer übertragen und im Remote-Repository im Cache gespeichert. Wenn Sie dasselbe getaggte Image noch einmal abrufen, wird es aus Ihrem Remote-Repository abgerufen. Ihre Docker Hub-Anmeldedaten werden verwendet.
So listen Sie die in Ihrem Remote-Repository gespeicherten Artefakte auf:
gcloud artifacts packages list \ --location=us-central1 \ --repository=quickstart-docker-hub-remoteDie 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 behalten und nur die Repository-Ressource löschen möchten, folgen Sie der Anleitung in diesem Abschnitt. Wenn Sie Ihr gesamtes Projekt löschen möchten, folgen Sie der Anleitung 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 Google Cloud Console die Seite Repositories.
Wählen Sie in der Repository-Liste das Repository
quickstart-docker-hub-remoteaus.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
- Wechseln Sie in der Google Cloud -Console zur Seite Ressourcen verwalten.
- Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
- Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.