Docker-Image mit Cloud Build erstellen und per Push übertragen

Erfahren Sie mehr zu den ersten Schritten mit Cloud Build, indem Sie ein Docker-Image erstellen und das Image per Push an Artifact Registry übertragen. Artifact Registry bietet einen zentralen Speicherort für die Verwaltung von privaten Paketen und Docker-Container-Images.

Sie erstellen das Image mit einem Dockerfile, der Konfigurationsdatei von Docker, und generieren dann dasselbe Image mit der Build-Konfigurationsdatei von Cloud Build.


Klicken Sie auf Anleitung, um eine detaillierte Anleitung für diese Aufgabe direkt im Cloud Shell-Editor zu erhalten:

Anleitung


Hinweis

  1. Melden Sie sich in Ihrem Google Cloud Konto an. Wenn Sie noch kein Konto bei Google Cloudhaben, 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.

    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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Cloud Build, Compute Engine and Artifact Registry APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  5. Installieren Sie die Google Cloud CLI.

  6. Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.

  7. Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  8. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  9. Verify that billing is enabled for your Google Cloud project.

  10. Enable the Cloud Build, Compute Engine and Artifact Registry APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  11. Installieren Sie die Google Cloud CLI.

  12. Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.

  13. Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  14. Sie benötigen für das Projekt die folgenden Rollen: Artifact Registry-Administrator, Cloud Build-Bearbeiter, Logs-Betrachter, Dienstkonto-Nutzer, Dienstnutzungs-Administrator, Storage-Bucket-Betrachter, Storage Object Creator

    Rollen prüfen

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

      IAM aufrufen
    2. Wählen Sie das Projekt aus.
    3. Suchen Sie in der Spalte Hauptkonto nach allen Zeilen, in denen Sie oder eine Gruppe, zu der Sie gehören, angegeben sind. Fragen Sie Ihren Administrator, zu welchen Gruppen Sie gehören.

    4. Prüfen Sie in allen Zeilen, in denen Sie angegeben oder enthalten sind, die Rolle Spalte , um zu sehen, ob die Liste der Rollen die erforderlichen Rollen enthält.

    Rollen zuweisen

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

      IAM aufrufen
    2. Wählen Sie das Projekt aus.
    3. Klicken Sie auf „Zugriffsrechte erteilen.
    4. Geben Sie im Feld Neue Hauptkonten Ihre Nutzer-ID ein. Das ist in der Regel die E‑Mail-Adresse eines Google-Kontos.

    5. Klicken Sie auf Rolle auswählen und suchen Sie nach der Rolle.
    6. Klicken Sie auf Add another role, wenn Sie weitere Rollen zuweisen möchten.
    7. Klicken Sie auf Speichern.

Quelldateien zum Erstellen vorbereiten

Zum Verpacken in ein Container-Image benötigen Sie Beispiel-Quellcode. In diesem Abschnitt erstellen Sie ein Shell-Skript und ein Dockerfile. Ein Dockerfile ist ein Textdokument, das Anweisungen für das Erstellen eines Images durch Docker enthält.

  1. Öffnen Sie ein Terminalfenster.

  2. Erstellen Sie ein neues Verzeichnis mit dem Namen quickstart-docker und rufen Sie dieses Verzeichnis auf:

    mkdir quickstart-docker
    cd quickstart-docker
    
  3. Erstellen Sie eine Datei mit dem Namen quickstart.sh und mit folgendem Inhalt:

    #!/bin/sh
    echo "Hello, world! The time is $(date)."
  4. Erstellen Sie eine Datei mit dem Namen Dockerfile und mit folgendem Inhalt:

    FROM alpine
    COPY quickstart.sh /
    CMD ["/quickstart.sh"]
  5. Führen Sie im Terminalfenster den folgenden Befehl aus, um quickstart.sh ausführbar zu machen:

    chmod +x quickstart.sh
    

Docker-Repository in Artifact Registry erstellen

  1. Verwenden Sie den gcloud artifacts repositories create Befehl, um am Speicherort us-west2 ein neues Docker-Repository mit dem Namen quickstart-docker-repo und der Beschreibung "Docker repository" zu erstellen:

    gcloud artifacts repositories create quickstart-docker-repo --repository-format=docker \
        --location=us-west2 --description="Docker repository"
    
  2. Prüfen Sie, ob das Repository erstellt wurde:

    gcloud artifacts repositories list
    

    Die Liste der angezeigten Repositories sollte quickstart-docker-repo enthalten.

    Artifact Registry uses a naming convention to identify repositories and images. Wenn Sie beispielsweise mit Docker-Images interagieren, die in Artifact Registry in der Region us-west2 gespeichert sind, verwenden Sie us-west2-docker.pkg.dev als Registry-Hostnamen in Ihren Befehlen.

Image mit Dockerfile erstellen

Verwenden Sie den gcloud builds submit Befehl, um ein Docker-Image mit einem Dockerfile zu erstellen. Sie benötigen keine separate Cloud Build-Konfigurationsdatei.

  1. Ermitteln Sie Ihre Google Cloud Projekt-ID mit dem folgenden Befehl:

    gcloud config get-value project
    
  2. Führen Sie den folgenden Befehl in dem Verzeichnis aus, das quickstart.sh und Dockerfile enthält:

    gcloud builds submit --region=us-west2 --tag us-west2-docker.pkg.dev/PROJECT_ID/quickstart-docker-repo/quickstart-image:tag1
    

    Nach Abschluss des Builds sollte die Ausgabe in etwa so aussehen:

    DONE
    ------------------------------------------------------------------------------------------------------------------------------------
    ID                                    CREATE_TIME                DURATION  SOURCE   IMAGES     STATUS
    545cb89c-f7a4-4652-8f63-579ac974be2e  2020-11-05T18:16:04+00:00  16S       gs://gcb-docs-project_cloudbuild/source/1604600163.528729-b70741b0f2d0449d8635aa22893258fe.tgz  us-west2-docker.pkg.dev/gcb-docs-project/quickstart-docker-repo/quickstart-image:tag1  SUCCESS
    

Sie haben nun mithilfe von Dockerfile ein Docker-Image mit dem Namen quickstart-image erstellt und das Image per Push an Artifact Registry übertragen.

Image mit einer Build-Konfigurationsdatei erstellen

In diesem Abschnitt verwenden Sie eine Cloud Build-Konfigurationsdatei, um dasselbe Docker-Image zu erstellen, das in den vorherigen Schritten erstellt wurde. Die Build-Konfigurationsdatei weist Cloud Build an, Aufgaben nach Ihren Spezifikationen auszuführen.

  1. Erstellen Sie im selben Verzeichnis, das auch quickstart.sh und Dockerfile enthält, eine Datei mit dem Namen cloudbuild.yaml und dem folgenden Inhalt. Diese Datei ist Ihre Build-Konfigurationsdatei. Bei der Build-Erstellung ersetzt Cloud Build automatisch $PROJECT_ID durch Ihre Projekt-ID.

    steps:
    - name: 'gcr.io/cloud-builders/docker'
      script: |
        docker build -t us-west2-docker.pkg.dev/$PROJECT_ID/quickstart-docker-repo/quickstart-image:tag1 .
      automapSubstitutions: true
    images:
    - 'us-west2-docker.pkg.dev/$PROJECT_ID/quickstart-docker-repo/quickstart-image:tag1'
  2. Starten Sie den Build mit dem folgenden Befehl:

    gcloud builds submit --region=us-west2 --config cloudbuild.yaml
    

    Nach Abschluss des Builds sollte die Ausgabe in etwa so aussehen:

     DONE
     ------------------------------------------------------------------------------------------------------------------------------------
     ID                                    CREATE_TIME                DURATION  SOURCE          IMAGES          STATUS
     046ddd31-3670-4771-9336-8919e7098b11  2020-11-05T18:24:02+00:00  15S       gs://gcb-docs-project_cloudbuild/source/1604600641.576884-8153be22c94d438aa86c78abf11403eb.tgz  us-west2-docker.pkg.dev/gcb-docs-project/quickstart-docker-repo/quickstart-image:tag1  SUCCESS
    

Sie haben mithilfe der Build-Konfigurationsdatei gerade quickstart-image erstellt und das Image per Push an Artifact Registry übertragen.

Build-Details ansehen

  1. Öffnen Sie die Cloud Build-Seite in der Google Cloud Console.

    Zur Seite "Cloud Build"

  2. Wählen Sie bei Bedarf Ihr Projekt aus und klicken Sie auf Öffnen.

    Sie sehen die Seite Build-Verlauf:

    Screenshot der Seite "Build-Verlauf"

  3. Wählen Sie bei Bedarf im Drop-down-Menü Region die Option us-west2 aus, um die Builds in dieser Region aufzurufen.

    Es werden zwei Builds aufgeführt, einer für jeden Build, den Sie in dieser Kurzanleitung ausgeführt haben.

  4. Klicken Sie auf einen der Builds.

    Es wird die Seite Build-Details angezeigt.

  5. Um sich die Artefakte Ihres Builds anzeigen zu lassen, klicken Sie unter Build-Zusammenfassung auf Build-Artefakte.

    Die Ausgabe sollte in etwa so aussehen:

    Grafik: Screenshot von Build-Artefakten

    Auf dieser Seite können Sie Ihr Build-Log herunterladen und die Image-Details in Artifact Registry aufrufen.

Bereinigen

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

  1. Öffnen Sie die Seite „Artifact Registry“ in der Google Cloud Console.

    Seite „Artifact Registry“ öffnen

  2. Wählen Sie Ihr Projekt aus und klicken Sie auf Öffnen.

  3. Wählen Sie quickstart-docker-repo aus.

  4. Klicken Sie auf Löschen.

Sie haben nun die Images, die Sie im Rahmen dieses Schnellstarts erstellt haben, gelöscht.

Nächste Schritte