Como instalar a imagem Docker da Google Cloud CLI

A imagem Docker da Google Cloud CLI permite extrair uma versão específica do CLI gcloud como uma imagem Docker Artifact Registry e execute com rapidez Comandos da Google Cloud CLI em um contêiner isolado e configurado corretamente.

A imagem Docker da Google Cloud CLI é a CLI gcloud instalada no topo de uma imagem Debian ou Alpine. O As imagens do Docker da Google Cloud CLI permitem o uso do gcloud os componentes em pacotes sem precisar instalar manualmente gcloud na sua máquina local.

Opções de imagem do Docker

Há seis imagens do Docker do Google Cloud CLI. Recomendamos que você instale esta imagem estável:

  • :stable, :VERSION-stable: imagem padrão, menor (baseada no Debian) com uma instalação padrão do gcloud.

Para usar uma imagem baseada em Alpine, instale o seguinte imagem:

  • :alpine, :VERSION-alpine: imagem menor (baseada nos Alpine) sem adição componentes instalados. Essa imagem oferece suporte a linux/arm.

Se você quiser imagens com pacotes adicionais ou gcloud componentes pré-instalados, é possível instalar uma das seguintes opções:

  • :emulators, :VERSION-emulators: imagem menor (baseada em Debian) com emulador pré-instalados.
  • :latest, :VERSION: imagem grande (baseada em Debian) com componentes adicionais que já vem pré-instalado.
  • :slim, :VERSION-slim: imagem menor (baseada em Debian) sem componentes que já vem pré-instalado.
  • :debian_component_based, :VERSION-debian_component_based: grande (baseado em Debian) com componentes adicionais pré-instalados. Ao contrário de :latest, que pacotes deb usados, essa imagem usa o gerenciador de componentes para instalar componentes. Essa imagem oferece suporte a linux/arm.

Componentes instalados em cada tag

Componente :stable :alpine :emulators :latest :slim :debian_component_based
Extensões do App Engine para Go x x
Appctl x
Assistente de pacote do módulo Go do Artifact Registry
Ferramenta de linha de comando do BigQuery x x x x x x
Pacote do Python 3.9 x x x x x x
Ferramenta de linha de comando do Bigtable x x
Emulador do Bigtable x x x
Emulador do Cloud Datastore x x x
Emulador do Cloud Firestore x x
Emulador do Cloud Pub/Sub x x x
Proxy do Cloud Run
Cloud SQL Proxy
Emulador do Spanner x x
Ferramenta de migração do Spanner
Ferramenta de linha de comando do Cloud Storage x x x x x x
Bibliotecas principais da CLI do Google Cloud x x x x x x
Ferramenta de hash CRC32C do Google Cloud x x x x x x
Auxiliar de credenciais do Docker do Google Container Registry
Kustomize x
Streaming de registros
Minikube x
CLI do Nomos x
Auxiliar de extração da API On-Demand Scanning x x
Skaffold x
Ferramentas do Terraform
anthos-auth x
config-connector
Comandos gcloud alpha x x x x
Comandos beta do gcloud x x x x
Extensões Java do app gcloud x
Extensões Python do app gcloud x
Extensões Python do gcloud app (bibliotecas extras) x x
gke-gcloud-auth-plugin x x
kpt x x
kubectl x x
kubectl-oidc
pkg

Usar uma versão específica na produção

Se você usar uma tag que não esteja vinculada a uma versão específica, talvez seu ambiente as seguintes alterações interruptivas:

  • Atualizações de versão do SDK Google Cloud, que podem alterar o comportamento da ferramenta.
  • Atualizações na lista de componentes instalados.

Para evitar possíveis alterações interruptivas, recomendamos que sua produção de nuvem usam uma imagem com controle de versão, como :489.0.0-stable, que você atualiza periodicamente.

Verifique a versão mais recente da Google Cloud CLI e todas as versões anteriores da CLI do Google Cloud.

instalar uma imagem do Docker

A imagem Docker está hospedada em Artifact Registry (em inglês) pelo seguinte nome de repositório: gcr.io/google.com/cloudsdktool/google-cloud-cli As imagens também estão disponíveis usando os repositórios us.gcr.io, eu.gcr.io e asia.gcr.io.

  1. Para usar a imagem da versão estável da Google Cloud CLI, gcr.io/google.com/cloudsdktool/google-cloud-cli:stable, extraia-o do Artifact Registry executando o seguinte comando:

    docker pull gcr.io/google.com/cloudsdktool/google-cloud-cli:489.0.0-stable
    
  2. Execute o seguinte comando para confirmar a instalação:

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

    Se você usou a tag :stable flutuante, que sempre aponta para a tag mais recente versão), verifique a instalação executando o seguinte comando:

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

Como autenticar com a imagem Docker da Google Cloud CLI

Autentique-se com a imagem Docker do Google Cloud CLI executando um dos seguintes comandos:

  • Autentique a gcloud com suas credenciais de usuário executando gcloud auth login:

    docker run -ti --name gcloud-config gcr.io/google.com/cloudsdktool/google-cloud-cli:stable gcloud auth login
    
  • Se você precisar autenticar aplicativos que usam as APIs do Google Cloud, transmita a opção --update-adc:

    docker run -ti --name gcloud-config gcr.io/google.com/cloudsdktool/google-cloud-cli:stable gcloud auth login --update-adc
    
  • Para definir um projeto padrão que é selecionado sempre que você abre o contêiner, execute o seguinte comando:

    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'
    

    Depois de autenticadas com sucesso, as credenciais são preservadas no volume de gcloud-config container.

    Para verificar, liste a instância de computação usando as credenciais. Para isso, execute o contêiner com --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
    
  • Se quiser autenticar usando uma conta de serviço, use o auth/credential_file_override para definir um caminho conta de serviço montada. Em seguida, atualize a configuração para ler o serviço ativado usando a variável de ambiente CLOUDSDK_CONFIG.

    No exemplo abaixo, a configuração mycloud tem o auth/credential_file_override já definido. A configuração aponta para um arquivo de certificado que está presente no contêiner como um arquivo montagem de volume.

    $ 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
    

    Para mais informações sobre como definir variáveis de ambiente, consulte:

Como instalar componentes complementares

É possível instalar outros componentes na imagem do Docker da Google Cloud CLI. O para instalar componentes adicionais varia de acordo com a tipo de imagem base.

Imagens baseadas no Debian

Por padrão, as imagens estáveis (:stable e :VERSION-stable) não têm componentes instalados que não sejam bq e gsutil. Para instalar mais para a imagem estável, siga um destes procedimentos:

Como criar sua própria imagem usando o Dockerfile da imagem :stable

Para criar sua própria imagem com o componente extra de :stable, clone o comando cloud-sdk-docker do GitHub e usar o comando docker build para criar a imagem Docker :stable do Dockerfile com o INSTALL_COMPONENTS . Por exemplo, para adicionar componentes 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 .

Como instalar outros pacotes ou componentes no ambiente de execução

Se você extraiu a imagem do Docker stable, poderá instalar os seguintes componentes adicionais durante a execução:

  • componentes da gcloud usando o ambiente COMPONENTS variável.
  • apt-packages usando a variável de ambiente APT_PACKAGES.

Por exemplo, se você quiser instalar os componentes cbt e kpt no momento da execução, execute o seguinte comando:

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

Para instalar os apt-packages curl e gcc ao executar a imagem do Docker, execute o seguinte comando:

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

Imagens baseadas em Alpine

Para instalar outros componentes para imagens baseadas em Alpine, crie um Dockerfile que usa a imagem cloud-sdk como a imagem base.

Por exemplo, para adicionar os componentes kubectl e app-engine-java:

  1. Crie o Dockerfile como:
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. Execute o comando a seguir para criar a imagem:
docker build -t my-cloud-sdk-docker:alpine .

Para imagens baseadas em Alpine, você precisa instalar dependências de outros os componentes manualmente.

Migrando para a imagem :stable

Se você estiver usando :latest, :slim, :emulators, :alpine e :debian_component_based imagens Docker, recomendamos a migração para a imagem :stable baseada no Debian para um tamanho de imagem menor e maior segurança e correções. Para acessar as etapas de migração para a imagem :stable, consulte Migrando para a imagem :stable.

Como receber suporte para imagens

As imagens hospedadas no Artifact Registry (em inglês) instalações totalmente funcionais da Google Cloud CLI. Se você encontrar bugs ou problemas relacionados às imagens do Docker, crie um tíquete de suporte.

Quando precisar de uma imagem com componentes, pacotes ou ferramentas adicionais, você poderá crie sua própria camada de imagem sobre a Imagem do Docker da Google Cloud CLI.

Solução de problemas

O que fazer se você receber um erro failed to fetch <image-tag> ao extrair a imagem do Docker?

Se você receber um erro failed to fetch <image-tag> ao tentar extrair um Imagem do Docker da Google Cloud CLI, você provavelmente está tentando buscar uma imagem que foi descontinuada e removida. Consulte a Opções de imagem do Docker para opções de imagem do Docker disponíveis e migrar para uma das tags compatíveis.

Quais são os casos de uso em que não é possível estender diretamente o Docker :stable imagem para ajudar no seu fluxo de trabalho atual?

A tabela a seguir lista os casos de uso em que não é possível estender diretamente a imagem do Docker :stable para se ajustar ao seu fluxo de trabalho e as opções de correção:

Casos de uso Opções de correção
Os componentes app-engine (usados na imagem do Docker :latest ou :debian_component_based) não são compatíveis com o Debian 12. Crie sua própria imagem a partir de uma imagem compatível do Debian (Debian 11) para instalar os componentes app-engine.
Pacotes de terceiros, como docker ou docker-buildx, não estão incluídos na imagem :stable Se você precisar desses pacotes de terceiros, crie sua própria imagem ou instale-os manualmente na imagem do Docker :stable.

O que fazer se o verificador encontrar vulnerabilidades nas imagens do Docker?

As imagens Docker da CLI do Google Cloud são hospedadas no Artifact Registry. As imagens são verificadas diariamente e as vulnerabilidades e exposições comuns (CVEs, na sigla em inglês) são atenuados antes de cada nova versão da gcloud. No entanto, se seu scanner detectaram vulnerabilidades Imagens Docker do Google Cloud CLI que não forem resolvidas, é possível registrar um bug que inclui as seguintes informações:

  • O tipo de vulnerabilidade.
  • O local exato na imagem.

As vulnerabilidades nas imagens do SO de base são resolvidas apenas para garantir que as imagens do Docker da CLI do Google Cloud estejam usando versões estáveis e recentes do Debian ou do Alpine Linux.