Menginstal image Docker Google Cloud CLI

Image Docker Google Cloud CLI memungkinkan Anda mengambil versi tertentu dari gcloud CLI sebagai image Docker dari Artifact Registry dan dengan cepat menjalankan perintah Google Cloud CLI dalam penampung yang diisolasi dan dikonfigurasi dengan benar.

Image Docker Google Cloud CLI adalah gcloud CLI yang diinstal di atas image Debian atau Alpine. Image Docker Google Cloud CLI memungkinkan penggunaan gcloud serta komponen yang dipaketkan tanpa harus menginstal gcloud secara manual di komputer lokal Anda.

Opsi image Docker

Ada enam image Docker Google Cloud CLI, dan semuanya akan menginstal alat command line gcloud, gsutil, dan bq. Sebaiknya instal gambar :stable untuk lingkungan minimal. Anda juga dapat menggunakan image stabil sebagai image dasar untuk deployment Anda sendiri yang memberi Anda fleksibilitas untuk hanya menginstal komponen dan paket yang Anda perlukan dalam image:

  • :stable, :VERSION-stable: Memberikan penginstalan gcloud dengan komponen gsutil dan bq. Image ini dibuat berdasarkan image dasar Debian 12 yang Disediakan Google terbaru. Image ini mendukung platform linux/amd dan linux/arm. Untuk menginstal versi gcloud tertentu, gunakan tag :VERSION-stable.

Jika ingin menggunakan image berbasis Alpine, Anda dapat menginstal image berikut:

  • :alpine, :VERSION-alpine: Mirip dengan stabil, tetapi dibuat berdasarkan image dasar Alpine 3.19 terbaru. Image ini mendukung platform linux/amd dan linux/arm. Untuk menginstal versi gcloud tertentu, gunakan tag :VERSION-alpine.

Jika menginginkan image dengan komponen atau paket tambahan yang telah diinstal sebelumnya, Anda dapat menginstal salah satu opsi berikut:

  • :emulators, :VERSION-emulators: Serupa dengan stabil, dengan penambahan semua komponen emulator. Image dibuat berdasarkan image dasar Debian 12 yang Disediakan Google terbaru dan menggunakan pengelola komponen untuk menginstal komponen. Image ini mendukung platform linux/amd dan linux/arm. Untuk menginstal versi gcloud tertentu, gunakan tag :VERSION-emulators.

  • :latest, :VERSION: Mirip dengan stabil, dengan komponen tambahan (Daftar komponen yang diinstal dalam image tercantum di bawah) yang telah diinstal sebelumnya. Image ini dibuat berdasarkan image dasar Debian 12 yang Disediakan Google terbaru dan menggunakan paket deb untuk menginstal komponen. Untuk menginstal versi gcloud tertentu, gunakan tag :VERSION.

  • :slim, :VERSION-slim: Mirip dengan stabil, tetapi menyertakan paket pihak ketiga tambahan seperti curl, python3-crcmod, apt-transport-https, lsb-release, openssh-client, git, make, dan gnupg. Image ini di-build berdasarkan image dasar Debian 12 yang Disediakan Google terbaru. Image ini mendukung platform linux/amd dan linux/arm. Untuk menginstal versi gcloud tertentu, gunakan tag :VERSION-slim.

  • :debian_component_based, :VERSION-debian_component_based: Serupa dengan stabil, dengan komponen tambahan (Daftar komponen yang diinstal dalam image tercantum di bawah) yang telah diinstal sebelumnya. Image ini dibuat berdasarkan image dasar Debian 12 yang Disediakan Google terbaru dan menggunakan pengelola komponen untuk menginstal komponen. Image ini mendukung platform linux/amd dan linux/arm. Untuk menginstal versi gcloud tertentu, gunakan tag :VERSION-debian_component_based.

Menggunakan versi tertentu dalam produksi

Jika Anda menggunakan tag yang tidak terikat dengan versi gcloud tertentu, lingkungan Anda mungkin mengalami kemungkinan perubahan yang dapat menyebabkan error berikut:

  • Update versi Google Cloud SDK, yang dapat mengubah perilaku alat.
  • Update pada daftar komponen yang diinstal.

Untuk menghindari kemungkinan perubahan yang menyebabkan error, sebaiknya lingkungan produksi Anda menggunakan salah satu dari hal berikut:

  • Tag dengan versi, seperti :496.0.0-stable
  • Hash gambar tertentu seperti: gcr.io/google.com/cloudsdktool/google-cloud-cli@sha256:9c0efc06918d5405b13bfe4bb5ce1d98ea4695cc703446e9e0aa0ee8800622df
  • Menghosting image di repositori Anda sendiri

Anda juga harus mengupdate image secara berkala untuk mendapatkan versi gcloud terbaru.

Periksa versi Google Cloud CLI terbaru dan semua versi Google Cloud CLI sebelumnya.

Komponen yang diinstal di setiap tag

Komponen :stable :alpine :emulators :latest :slim :debian_component_based
Ekstensi App Engine Go x x
Appctl x
Alat Command Line BigQuery x x x x x x
Python 3.9 yang Dipaketkan x x x x x x
Alat Command Line Bigtable x x
Emulator Bigtable x x x
Emulator Cloud Datastore x x x
Emulator Cloud Firestore x x
Emulator Cloud Pub/Sub x x x
Emulator Spanner x x
Alat Command Line Cloud Storage x x x x x x
Library Inti Google Cloud CLI x x x x x x
Alat Hash CRC32C Google Cloud x x x x x x
Kustomize x
Minikube x
Nomos CLI x
Helper ekstraksi On-Demand Scanning API x x
Skaffold x
anthos-auth x
Perintah gcloud Alpha x x x x
Perintah gcloud Beta x x x x
Ekstensi Java gcloud app x
Ekstensi Python gcloud app x
Ekstensi Python aplikasi gcloud (Library Tambahan) x x
gke-gcloud-auth-plugin x x
kpt x x
kubectl x x

Menginstal image Docker

Image Docker dihosting di Artifact Registry dengan nama repositori berikut: gcr.io/google.com/cloudsdktool/google-cloud-cli. Gambar juga tersedia menggunakan repositori us.gcr.io, eu.gcr.io, dan asia.gcr.io.

  1. Untuk menggunakan image rilis Google Cloud CLI yang stabil, gcr.io/google.com/cloudsdktool/google-cloud-cli:stable, ambil dari Artifact Registry dengan menjalankan perintah berikut:

    docker pull gcr.io/google.com/cloudsdktool/google-cloud-cli:489.0.0-stable
    

    Anda juga dapat menggunakan hash image untuk mengambil image Docker tertentu dari repositori. Untuk mengambil gambar yang sama dari contoh sebelumnya (:489.0.0-stable) menggunakan hash gambar, jalankan perintah berikut:

    docker pull gcr.io/google.com/cloudsdktool/google-cloud-cli@sha256:589a0db8919614ef919dfd6ed89127211b4b6bf5ee6a2e2ce92abf33cbfe49d8
    
  2. Verifikasi penginstalan dengan menjalankan:

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

    Jika Anda telah menggunakan tag :stable mengambang (yang selalu mengarah ke rilis terbaru), verifikasi penginstalan dengan menjalankan perintah berikut:

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

Mengautentikasi dengan image Docker Google Cloud CLI

Lakukan autentikasi dengan image Docker Google Cloud CLI dengan menjalankan salah satu perintah berikut:

  • Lakukan autentikasi gcloud dengan kredensial pengguna Anda dengan menjalankan gcloud auth login:

    docker run -ti --name gcloud-config gcr.io/google.com/cloudsdktool/google-cloud-cli:stable gcloud auth login
    
  • Jika Anda perlu mengautentikasi aplikasi yang menggunakan Google Cloud API, teruskan opsi --update-adc:

    docker run -ti --name gcloud-config gcr.io/google.com/cloudsdktool/google-cloud-cli:stable gcloud auth login --update-adc
    
  • Untuk menetapkan project default yang dipilih setiap kali Anda membuka penampung, jalankan perintah berikut:

    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'
    

    Setelah Anda berhasil melakukan autentikasi, kredensial akan disimpan dalam volume gcloud-config container.

    Untuk memverifikasi, cantumkan instance komputasi menggunakan kredensial dengan menjalankan penampung dengan --volumes-from:

    docker run --rm --volumes-from gcloud-config gcr.io/google.com/cloudsdktool/google-cloud-cli:stable gcloud compute instances list --project your-project
    
  • Jika Anda ingin mengautentikasi menggunakan akun layanan, gunakan properti auth/credential_file_override untuk menetapkan jalur ke akun layanan yang dipasang. Kemudian, perbarui konfigurasi untuk membaca akun layanan yang dipasang menggunakan variabel lingkungan CLOUDSDK_CONFIG.

    Dalam contoh berikut, konfigurasi mycloud memiliki auth/credential_file_override yang sudah ditetapkan. Konfigurasi mengarah ke file sertifikat yang ada dalam penampung sebagai pemasangan volume terpisah.

    $ 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
    

    Untuk informasi selengkapnya tentang cara menetapkan variabel lingkungan, lihat hal berikut:

Menginstal komponen tambahan

Anda dapat menginstal komponen tambahan di image Docker Google Cloud CLI. Pendekatan untuk menginstal komponen tambahan bervariasi bergantung pada jenis gambar dasar yang mendasarinya.

Image berbasis Debian

Secara default, image stabil (:stable dan :VERSION-stable) tidak memiliki komponen yang diinstal selain bq dan gsutil. Untuk menginstal komponen tambahan untuk image stabil, lakukan salah satu hal berikut:

Mem-build image Anda sendiri menggunakan Dockerfile image :stable

Untuk mem-build image Anda sendiri dengan komponen tambahan dari :stable, Anda dapat meng-clone direktori GitHub cloud-sdk-docker dan menggunakan perintah docker build untuk mem-build image Docker :stable dari Dockerfile dengan argumen INSTALL_COMPONENTS. Misalnya, untuk menambahkan komponen datastore-emulator:

# 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 .

Menginstal paket atau komponen tambahan saat runtime

Jika telah mengambil image Docker stable, Anda dapat menginstal komponen tambahan berikut selama runtime:

  • komponen gcloud menggunakan variabel lingkungan COMPONENTS.
  • apt-packages menggunakan variabel lingkungan APT_PACKAGES.

Misalnya, jika ingin menginstal komponen cbt dan kpt saat runtime, Anda dapat menjalankan perintah berikut:

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

Untuk menginstal paket apt curl dan gcc saat menjalankan image Docker, jalankan perintah berikut:

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

Image berbasis Alpine

Untuk menginstal komponen tambahan untuk image berbasis Alpine, buat Dockerfile yang menggunakan image cloud-sdk sebagai image dasar.

Misalnya, untuk menambahkan komponen kubectl dan app-engine-java:

  1. Buat Dockerfile sebagai:
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. Build image dengan menjalankan perintah berikut:
docker build -t my-cloud-sdk-docker:alpine .

Untuk image berbasis Alpine, Anda harus menginstal dependensi komponen tambahan secara manual.

Bermigrasi ke image :stable

Jika Anda menggunakan image Docker :latest, :slim, :emulators, :alpine, dan :debian_component_based, sebaiknya Anda bermigrasi ke image :stable berbasis Debian untuk mendapatkan ukuran image yang lebih kecil dan perbaikan keamanan yang lebih baik. Untuk mengetahui langkah-langkah bermigrasi ke image :stable, lihat Bermigrasi ke image :stable.

Mendapatkan dukungan untuk gambar

Image yang dihosting di Artifact Registry menyediakan penginstalan Google Cloud CLI yang berfungsi penuh. Jika menemukan bug atau masalah terkait image Docker, Anda dapat membuat tiket dukungan.

Jika memerlukan image dengan komponen, paket, atau alat tambahan, Anda dapat membuat lapisan image Anda sendiri di atas image Docker Google Cloud CLI.

Pemecahan masalah

Apa yang harus Anda lakukan jika melihat error failed to fetch <image-tag> saat mengambil image Docker?

Jika Anda mendapatkan error failed to fetch <image-tag> saat mencoba mengambil image Docker Google Cloud CLI, kemungkinan besar Anda mencoba mengambil tag image yang tidak digunakan lagi dan dihapus. Periksa Opsi Image Docker untuk mengetahui Opsi image Docker yang tersedia dan bermigrasi ke salah satu tag yang didukung.

Apa kasus penggunaan saat Anda tidak dapat langsung memperluas image Docker :stable untuk mendukung alur kerja Anda saat ini?

Tabel berikut mencantumkan kasus penggunaan saat Anda tidak dapat langsung memperluas image docker :stable agar sesuai dengan alur kerja Anda dan mencantumkan opsi untuk melakukan perbaikan:

Kasus penggunaan Opsi Perbaikan
Komponen app-engine (digunakan dalam image Docker :latest atau :debian_component_based) tidak kompatibel dengan Debian 12. Build image Anda sendiri dari image Debian (Debian 11) yang kompatibel untuk menginstal komponen app-engine.
Paket pihak ketiga seperti docker atau docker-buildx tidak disertakan dalam image :stable Jika Anda memerlukan paket pihak ketiga ini, build image Anda sendiri atau instal paket ini di image Docker :stable secara manual.

Apa yang harus Anda lakukan jika pemindai menemukan kerentanan dalam image docker?

Image Docker Google Cloud CLI dihosting di Artifact Registry. Image dipindai setiap hari dan kerentanan dan eksposur umum (CVE) dimitigasi sebelum setiap rilis gcloud baru. Namun, jika pemindai Anda telah mendeteksi kerentanan dalam image Docker Google Cloud CLI yang tidak terselesaikan, Anda dapat melaporkan bug yang menyertakan informasi berikut:

  • Jenis kerentanan.
  • Lokasi persis dalam gambar.

Kerentanan dalam image OS dasar hanya ditangani untuk memastikan bahwa image Docker Google Cloud CLI menggunakan rilis Debian atau Alpine Linux terbaru yang stabil.