Docker-Image der Google Cloud CLI installieren

Mit dem Google Cloud CLI Docker-Image können Sie eine bestimmte Version gcloud CLI als Docker-Image von Artifact Registry nutzen und schnell ausführen Google Cloud CLI-Befehle in einem isolierten, korrekt konfigurierten Container

Das Docker-Image der Google Cloud CLI ist die gcloud CLI, die auf einem Debian- oder Alpine-Image installiert ist. Mit den Docker-Images der Google Cloud CLI können Sie gcloud und die zugehörigen Komponenten verwenden, ohne gcloud manuell auf Ihrem lokalen Computer installieren zu müssen.

Docker-Image-Optionen

Es gibt sechs Google Cloud CLI-Docker-Images. Wir empfehlen Ihnen, das folgende stabile Image:

  • :stable, :VERSION-stable: Standard-, kleinstes (Debian-basiertes) Image mit einem gcloud-Standardinstallation.

Wenn Sie ein Alpine-basiertes Image verwenden möchten, können Sie Folgendes installieren: Bild:

  • :alpine, :VERSION-alpine: Kleineres (Alpine-basiertes) Image ohne installierte zusätzliche Komponenten. Dieses Image unterstützt linux/arm.

Wenn Sie Images mit zusätzlichen Paketen oder gcloud benötigen Komponenten vorinstalliert, können Sie eine der folgenden Optionen installieren:

  • :emulators, :VERSION-emulators: Kleineres (Debian-basiertes) Image mit vorinstallierten Emulatorkomponenten.
  • :latest, :VERSION: großes (Debian-basiertes) Image mit vorinstallierten zusätzlichen Komponenten
  • :slim, :VERSION-slim: kleineres (Debian-basiertes) Image ohne Komponenten vorinstalliert.
  • :debian_component_based, :VERSION-debian_component_based: großes (Debian-basiertes) Image mit vorinstallierten zusätzlichen Komponenten Im Gegensatz zu :latest, bei dem deb-Pakete verwendet wurden, werden bei diesem Image Komponenten über den Komponentenmanager installiert. Dieses Image unterstützt linux/arm.

In jedem Tag installierte Komponenten

Komponente :stable :alpine :emulators :latest :slim :debian_component_based
App Engine Go-Erweiterungen x x
Appctl x
Artifact Registry-Go-Modulpaket-Hilfsprogramm
BigQuery-Befehlszeilentool x x x x x x
Im Lieferumfang enthaltenes Python 3.9 x x x x x x
Bigtable-Befehlszeilentool x x
Bigtable Emulator x x x
Cloud Datastore-Emulator x x x
Cloud Firestore-Emulator x x
Cloud Pub/Sub-Emulator x x x
Cloud Run-Proxy
Cloud SQL Proxy
Spanner Emulator x x
Spanner Migration Tool
Cloud Storage-Befehlszeilentool x x x x x x
Google Cloud CLI-Kernbibliotheken x x x x x x
Google Cloud CRC32C-Hash-Tool x x x x x x
Docker Credential Helper von Google Container Registry
Kustomize x
Logstreaming
Minikube x
Nomos-Befehlszeile x
On-Demand Scanning API-Extraktionshilfe x x
Skaffold x
Terraform-Tools
anthos-auth x
config-connector
gcloud-Alphabefehle x x x x
gcloud-Betabefehle x x x x
gcloud app Java-Erweiterungen x
gcloud app Python-Erweiterungen x
gcloud app Python-Erweiterungen (zusätzliche Bibliotheken) x x
gke-gcloud-auth-plugin x x
KPT x x
kubectl x x
kubectl-oidc
Packung

Bestimmte Version in der Produktion verwenden

Die Tags :<tag> und :<VERSION-tag> des Google Cloud CLI Docker-Images sind täglich neu erstellt werden, um alle Basis-Image-Sicherheitslücken sofort zu beheben. Wenn Sie ein Tag verwenden, das nicht an eine bestimmte Version gebunden ist, kann es in Ihrer Umgebung zu den folgenden möglicherweise bahnbrechenden Änderungen kommen:

  • Aktualisierungen der Google Cloud SDK-Version, die das Verhalten des Tools ändern können.
  • Aktualisierungen der Liste der installierten Komponenten.

Um mögliche Unterbrechungen zu vermeiden, wird empfohlen, in Ihrer Produktionsumgebung eine der folgenden Versionen zu verwenden:

  • Ein mit Datum versehenes Tag mit Versionsangabe, z. B. :496.0.0-stable-20241015
  • Einen bestimmten Bild-Hash, z. B.: gcr.io/google.com/cloudsdktool/google-cloud-cli@sha256:9c0efc06918d5405b13bfe4bb5ce1d98ea4695cc703446e9e0aa0ee8800622df

Sie sollten auch die Bilder regelmäßig aktualisieren, um gcloud-Version.

Informationen zur aktuellen Version der Google Cloud CLI und zu allen vorherigen Versionen der Google Cloud CLI

Docker-Image installieren

Das Docker-Image wird in Artifact Registry mit dem folgenden Repository-Namen gehostet: gcr.io/google.com/cloudsdktool/google-cloud-cli. Die Bilder sind auch über die Repositories us.gcr.io, eu.gcr.io und asia.gcr.io verfügbar.

  1. Wenn Sie das Image der stabilen Google Cloud CLI-Version gcr.io/google.com/cloudsdktool/google-cloud-cli:stable verwenden möchten, rufen Sie es mit dem folgenden Befehl aus der Artifact Registry ab:

    docker pull gcr.io/google.com/cloudsdktool/google-cloud-cli:489.0.0-stable
    
  2. Überprüfen Sie die Installation mit folgendem Befehl:

    docker run --rm gcr.io/google.com/cloudsdktool/google-cloud-cli:489.0.0-stable gcloud version
    

    Wenn Sie das Floating-Tag :stable verwendet haben (das immer auf das neueste veröffentlichen, überprüfen Sie die Installation mit dem folgenden Befehl:

    docker run --rm gcr.io/google.com/cloudsdktool/google-cloud-cli:stable gcloud version
    

Authentifizierung mit dem Docker-Image der Google Cloud CLI

Authentifizieren Sie sich beim Docker-Image der Google Cloud CLI, indem Sie einen der folgenden Befehle:

  • Authentifizieren Sie gcloud mit Ihren Nutzeranmeldedaten, indem Sie gcloud auth login wird ausgeführt:

    docker run -ti --name gcloud-config gcr.io/google.com/cloudsdktool/google-cloud-cli:stable gcloud auth login
    
  • Wenn Sie Anwendungen authentifizieren müssen, die die Google Cloud APIs verwenden, geben Sie die Option --update-adc an:

    docker run -ti --name gcloud-config gcr.io/google.com/cloudsdktool/google-cloud-cli:stable gcloud auth login --update-adc
    
  • So legen Sie ein Standardprojekt fest, das bei jedem Öffnen des Containers ausgewählt wird: führen Sie den folgenden Befehl aus:

    docker run -ti --name gcloud-config gcr.io/google.com/cloudsdktool/google-cloud-cli:stable /bin/bash -c 'gcloud auth login && gcloud config set project your-project'
    

    Nach der erfolgreichen Authentifizierung werden die Anmeldedaten im Volume von gcloud-config container aufbewahrt.

    Führen Sie den Container mit --volumes-from aus, um die Compute-Instanz mit den Anmeldedaten aufzulisten:

    docker run --rm --volumes-from gcloud-config gcr.io/google.com/cloudsdktool/google-cloud-cli:stable gcloud compute instances list --project your-project
    
  • Wenn Sie sich mit einem Dienstkonto authentifizieren möchten, legen Sie mit der Property auth/credential_file_override einen Pfad zu einem bereitgestellten Dienstkonto fest. Aktualisieren Sie dann die Konfiguration, damit das bereitgestellte Dienstkonto mithilfe der Umgebungsvariablen CLOUDSDK_CONFIG gelesen wird.

    Im folgenden Beispiel ist die auth/credential_file_override bereits in der mycloud-Konfiguration festgelegt. Die Konfiguration verweist auf eine Zertifikatsdatei, die im Container als separate Volume-Bereitstellung

    $ docker run -ti -e CLOUDSDK_CONFIG=/config/mygcloud \
                  -v `pwd`/mygcloud:/config/mygcloud \
                  -v `pwd`:/certs  gcr.io/google.com/cloudsdktool/google-cloud-cli:stable /bin/bash
    
    bash-4.4# gcloud config list
    [auth]
    credential_file_override = /certs/svc_account.json
    
    bash-4.4# head -10  /certs/svc_account.json
    {
       "type": "service_account",
       "project_id": "project_id1",
    ....
    
    bash-4.4# gcloud projects list
    PROJECT_ID           NAME         PROJECT_NUMBER
    project_id1          GCPAppID     1071284184432
    

    Weitere Informationen zum Festlegen von Umgebungsvariablen finden Sie hier:

Zusätzliche Komponenten installieren

Sie können zusätzliche Komponenten im Docker-Image der Google Cloud CLI installieren. Die der Installation zusätzlicher Komponenten je nach zugrunde liegendem Basis-Image-Typ.

Debian-basierte Images

Standardmäßig haben die stabilen Images (:stable und :VERSION-stable) keine andere Komponenten als bq und gsutil installiert haben. Führen Sie einen der folgenden Schritte aus, um zusätzliche Komponenten für das stabile Image zu installieren:

Eigenes Image mit dem Image-Dockerfile :stable erstellen

Wenn Sie ein eigenes Image mit zusätzlichen Komponenten aus :stable erstellen möchten, können Sie Folgendes klonen: cloud-sdk-docker GitHub-Verzeichnis erstellen und den Befehl docker build verwenden, um das Docker-Image :stable aus dem Dockerfile mit dem INSTALL_COMPONENTS . So fügen Sie beispielsweise datastore-emulator-Komponenten hinzu:

# clone the GitHub docker directory 
$ git clone https://github.com/GoogleCloudPlatform/cloud-sdk-docker.git
$ docker build --build-arg CLOUD_SDK_VERSION=<release_version> \
   --build-arg INSTALL_COMPONENTS="google-cloud-cli-datastore-emulator=<release_version>-0" \
   -t my-cloud-sdk-docker:stable .

Zusätzliche Pakete oder Komponenten zur Laufzeit installieren

Wenn Sie das stable-Docker-Image abgerufen haben, können Sie während der Laufzeit die folgenden zusätzlichen Komponenten installieren:

  • gcloud-Komponenten mithilfe der Umgebungsvariablen COMPONENTS.
  • apt-Pakete mithilfe der Umgebungsvariablen APT_PACKAGES.

Wenn Sie beispielsweise die Komponenten cbt und kpt zur Laufzeit installieren möchten, können Sie den folgenden Befehl ausführen:

docker run -e COMPONENTS='google-cloud-cli-cbt google-cloud-cli-kpt' \
gcr.io/google.com/cloudsdktool/google-cloud-cli:stable gcloud version

So installieren Sie die apt-packages curl und gcc, während Sie das Docker-Image ausführen: führen Sie den folgenden Befehl aus:

docker run -e APT_PACKAGES='curl gcc' \
gcr.io/google.com/cloudsdktool/google-cloud-cli:stable gcloud version

Alpine-basierte Images

Um zusätzliche Komponenten für Alpine-basierte Images zu installieren, erstellen Sie ein Dockerfile, das das cloud-sdk-Image als Basis-Image verwendet.

So fügen Sie beispielsweise die Komponenten kubectl und app-engine-java hinzu:

  1. Erstellen Sie das Dockerfile so:
FROM gcr.io/google.com/cloudsdktool/google-cloud-cli:alpine
RUN apk --update add gcompat openjdk8-jre
RUN gcloud components install app-engine-java kubectl
  1. Erstellen Sie das Image mit dem folgenden Befehl:
docker build -t my-cloud-sdk-docker:alpine .

Bei Alpine-basierten Images müssen Sie die Abhängigkeiten zusätzlicher Komponenten manuell installieren.

Migration zum :stable-Image

Wenn Sie die Docker-Images :latest, :slim, :emulators, :alpine und :debian_component_based verwenden, empfehlen wir Ihnen, zum Debian-basierten :stable-Image zu migrieren. Dieses hat eine kleinere Größe und bietet verbesserte Sicherheitsfixes. Schritte zur Migration zum :stable-Image finden Sie unter Zum Image :stable migrieren

Support für Bilder

Die in der Artifact Registry gehosteten Images bieten eine voll funktionsfähige Installation der Google Cloud CLI. Wenn Sie Fehler oder Probleme im Zusammenhang mit den Docker-Images finden, können Sie ein Supportticket erstellen.

Wenn Sie ein Image mit zusätzlichen Komponenten, Paketen oder Tools benötigen, können Sie eine eigene Image-Ebene über dem Docker-Image der Google Cloud CLI erstellen.

Fehlerbehebung

Vorgehensweise bei der Fehlermeldung failed to fetch <image-tag> wenn Sie das Docker-Image abrufen?

Wenn Sie beim Pullen eines Docker-Images der Google Cloud CLI den Fehler failed to fetch <image-tag> erhalten, versuchen Sie höchstwahrscheinlich, ein Image-Tag abzurufen, das eingestellt und entfernt wurde. Überprüfen Sie die Docker Image-Optionen für verfügbare Docker-Image-Optionen und zu einem der unterstützten Tags migrieren.

In welchen Anwendungsfällen kann der Docker-Container :stable nicht direkt erweitert werden? Bild, das Ihren aktuellen Workflow unterstützt?

In der folgenden Tabelle sind die Anwendungsfälle aufgeführt, in denen es nicht möglich ist, den Parameter :stable-Docker-Image, das zu Ihrem Workflow passt, und listet die zu korrigierenden Optionen auf:

Anwendungsfälle Optionen zur Behebung
app-engine-Komponenten (verwendet im :latest- oder :debian_component_based-Docker-Image) sind nicht mit Debian 12 kompatibel. Erstellen Sie ein eigenes Image aus einem kompatiblen Debian-Image (Debian 11), um app-engine-Komponenten zu installieren.
Drittanbieterpakete wie Docker oder Docker-buildx sind nicht im :stable-Image enthalten Wenn Sie diese Drittanbieterpakete benötigen, erstellen Sie ein eigenes Image oder installieren Sie diese Pakete manuell im Docker-Image :stable.

Was sollten Sie tun, wenn der Scanner Sicherheitslücken in den Docker-Images gefunden hat?

Docker-Images der Google Cloud CLI werden in Artifact Registry gehostet. Die Images werden täglich gescannt und Gängige Sicherheitslücken und Schwachstellen (Common Vulnerabilities and Exposures, CVEs) werden vor jeder neuen gcloud-Version gemindert werden. Wenn Ihr Scanner jedoch Sicherheitslücken in den Docker-Images der Google Cloud CLI gefunden hat, die nicht behoben wurden, können Sie einen Fehler melden. Geben Sie dabei die folgenden Informationen an:

  • Die Art der Sicherheitslücke.
  • Die genaue Position im Bild.

Sicherheitslücken in Basisbetriebssystem-Images werden nur behoben, um sicherzustellen, dass in den Docker-Images der Google Cloud CLI aktuelle, stabile Releases von Debian oder Alpine Linux verwendet werden.