Crea ed esegui il push di un'immagine Docker con Cloud Build

Scopri come iniziare a utilizzare Cloud Build creando un'immagine Docker ed eseguendone il push su Artifact Registry. Artifact Registry fornisce un'unica posizione per la gestione dei pacchetti privati e delle immagini container Docker.

Innanzitutto, creerai l'immagine utilizzando un Dockerfile, ovvero il file di configurazione Docker, e poi creerai la stessa immagine utilizzando il file di configurazione di Cloud Build.


Per seguire le indicazioni dettagliate per questa attività direttamente nell'editor di Cloud Shell, fai clic su Procedura guidata:

Procedura guidata


Prima di iniziare

  1. 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.
  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. Install the Google Cloud CLI.

  6. Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

  7. Per inizializzare gcloud CLI, esegui questo comando:

    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. Install the Google Cloud CLI.

  12. Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

  13. Per inizializzare gcloud CLI, esegui questo comando:

    gcloud init
  14. Make sure that you have the following role or roles on the project: Artifact Registry Administrator, Cloud Build Editor, Logs Viewer, Service Account User, Service Usage Admin, Storage Bucket Viewer, Storage Object Creator

    Check for the roles

    1. In the Google Cloud console, go to the IAM page.

      Go to IAM
    2. Select the project.
    3. In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.

    4. For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.

    Grant the roles

    1. In the Google Cloud console, go to the IAM page.

      Vai a IAM
    2. Seleziona il progetto.
    3. Fai clic su Concedi l'accesso.
    4. Nel campo Nuove entità, inserisci il tuo identificatore dell'utente. In genere si tratta dell'indirizzo email di un Account Google.

    5. Nell'elenco Seleziona un ruolo, seleziona un ruolo.
    6. Per concedere altri ruoli, fai clic su Aggiungi un altro ruolo e aggiungi ogni ruolo successivo.
    7. Fai clic su Salva.
    8. Prepara i file di origine da creare

      Avrai bisogno di un codice sorgente di esempio da pacchettizzare in un'immagine container. In questa sezione, creerai uno script shell e un Dockerfile. Un Dockerfile è un documento di testo che contiene le istruzioni per Docker per creare un'immagine.

      1. Apri una finestra del terminale.

      2. Crea una nuova directory denominata quickstart-docker e accedi alla directory:

        mkdir quickstart-docker
        cd quickstart-docker
        
      3. Crea un file denominato quickstart.sh con i seguenti contenuti:

        #!/bin/sh
        echo "Hello, world! The time is $(date)."
      4. Crea un file denominato Dockerfile con i seguenti contenuti:

        FROM alpine
        COPY quickstart.sh /
        CMD ["/quickstart.sh"]
      5. Nella finestra del terminale, esegui questo comando per rendere eseguibile quickstart.sh:

        chmod +x quickstart.sh
        

      Crea un repository Docker in Artifact Registry

      1. Utilizza il comando gcloud artifacts repositories create per creare un repository Docker denominato quickstart-docker-repo nella località us-west2 con la descrizione "Docker repository":

        gcloud artifacts repositories create quickstart-docker-repo --repository-format=docker \
            --location=us-west2 --description="Docker repository"
        
      2. Verifica che il repository sia stato creato:

        gcloud artifacts repositories list
        

        L'elenco dei repository visualizzati deve includere quickstart-docker-repo.

        Artifact Registry utilizza una convenzione di denominazione per identificare repository e immagini. Ad esempio, quando interagisci con le immagini Docker archiviate in Artifact Registry nella regione us-west2, utilizzi us-west2-docker.pkg.dev come nome host del registro nei tuoi comandi.

      Crea un'immagine utilizzando un Dockerfile

      Utilizza il comando gcloud builds submit per creare un'immagine Docker utilizzando un Dockerfile. Non è necessario un file di configurazione Cloud Build separato.

      1. Recupera l'ID progetto Google Cloud eseguendo questo comando:

        gcloud config get-value project
        
      2. Esegui questo comando dalla directory contenente quickstart.sh e Dockerfile:

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

        Al termine della build, l'output dovrebbe essere simile al seguente:

        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
        

      Hai appena creato un'immagine Docker denominata quickstart-image utilizzando Dockerfile e ne hai eseguito il push ad Artifact Registry.

      Crea un'immagine utilizzando un file di configurazione della build

      In questa sezione utilizzi un file di configurazione Cloud Build per creare la stessa immagine Docker creata nei passaggi precedenti. Il file di configurazione di compilazione indica a Cloud Build di eseguire attività in base alle tue specifiche.

      1. Nella stessa directory contenente quickstart.sh e Dockerfile, crea un file denominato cloudbuild.yaml con il seguente contenuto. Questo file è il file di configurazione della build. Al momento della compilazione, Cloud Build sostituisce automaticamente $PROJECT_ID con l'ID progetto.

        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. Avvia la build eseguendo questo comando:

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

        Al termine della build, l'output dovrebbe essere simile al seguente:

         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
        

      Hai appena creato quickstart-image utilizzando il file di configurazione della build e hai eseguito il push dell'immagine ad Artifact Registry.

      Visualizza i dettagli della build

      1. Apri la pagina Cloud Build nella console Google Cloud .

        Apri la pagina Cloud Build

      2. Se necessario, seleziona il progetto e fai clic su Apri.

        Viene visualizzata la pagina Cronologia build:

        Screenshot della pagina della cronologia delle build

      3. Se necessario, seleziona us-west2 nel menu a discesa Regione per visualizzare le build in questa regione.

        Verranno elencate due build, una per ciascuna delle build eseguite in questa guida rapida.

      4. Fai clic su una delle build.

        Viene visualizzata la pagina Dettagli build.

      5. Per visualizzare gli artefatti della build, in Riepilogo build, fai clic su Artefatti build.

        Dovresti vedere un output simile al seguente:

        Screenshot degli artefatti della build

        Da questa pagina puoi scaricare il log di build e visualizzare i dettagli dell'immagine in Artifact Registry.

      Esegui la pulizia

      Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questa pagina, segui questi passaggi.

      1. Apri la pagina Artifact Registry nella console Google Cloud .

        Apri la pagina di Artifact Registry

      2. Seleziona il progetto e fai clic su Apri.

      3. Seleziona quickstart-docker-repo.

      4. Fai clic su Elimina.

      Hai eliminato il repository che hai creato nell'ambito di questa guida rapida.

      Passaggi successivi