A imagem do Docker da Google Cloud CLI permite extrair uma versão específica da CLI gcloud como uma imagem do Docker do Artifact Registry e executar rapidamente comandos da Google Cloud CLI em um contêiner isolado e configurado corretamente.
A imagem do Docker da Google Cloud CLI é a CLI gcloud instalada sobre uma imagem Debian ou Alpine. As imagens Docker da CLI do Google Cloud permitem o uso da gcloud e dos componentes agrupados sem precisar instalar manualmente a gcloud na máquina local.
Opções de imagem do Docker
Há seis imagens Docker da CLI do Google Cloud, e todas instalam as ferramentas de linha de comando gcloud
, gsutil
e bq
. Recomendamos que você instale
a imagem :stable
para um ambiente mínimo. Você também pode usar a imagem estável como a imagem de base para suas implantações, o que oferece a flexibilidade de instalar apenas os componentes e pacotes necessários na imagem:
:stable
,:VERSION-stable
: fornece uma instalação do gcloud com componentesgsutil
ebq
. A imagem é criada com base na imagem base do Debian 12 fornecida pelo Google mais recente. Essa imagem oferece suporte às plataformaslinux/amd
elinux/arm
. Para instalar versões específicas da gcloud, use a tag:VERSION-stable
.
Se você quiser usar uma imagem baseada em Alpine, instale a imagem a seguir:
:alpine
,:VERSION-alpine
: semelhante à versão estável, mas criada com base na imagem de base Alpine 3.19 mais recente. Essa imagem oferece suporte às plataformaslinux/amd
elinux/arm
. Para instalar versões específicas da gcloud, use a tag:VERSION-alpine
.
Se você quiser imagens com componentes ou pacotes pré-instalados, instale uma das seguintes opções:
:emulators
,:VERSION-emulators
: semelhante à estável, com a adição de todos os componentes do emulador. A imagem é baseada na imagem de base do Debian 12 fornecida pelo Google mais recente e usa o gerenciador de componentes para instalar os componentes. Essa imagem oferece suporte às plataformaslinux/amd
elinux/arm
. Para instalar versões específicas do gcloud, use a tag:VERSION-emulators
.:latest
,:VERSION
: semelhante à estável, com componentes adicionais (a lista de componentes instalados na imagem está abaixo) pré-instalados. A imagem é baseada na imagem de base fornecida pelo Google do Debian 12 mais recente e usa pacotes deb para instalar os componentes. Para instalar versões específicas da gcloud, use a tag:VERSION
.:slim
,:VERSION-slim
: semelhante à estável, mas inclui os pacotes de terceiros adicionais, comocurl
,python3-crcmod
,apt-transport-https
,lsb-release
,openssh-client
,git
,make
egnupg
. Essa imagem é criada com base na imagem de base do Debian 12 fornecida pelo Google mais recente. Essa imagem oferece suporte às plataformaslinux/amd
elinux/arm
. Para instalar versões específicas da gcloud, use a tag:VERSION-slim
.:debian_component_based
,:VERSION-debian_component_based
: semelhante à estável, com componentes adicionais (a lista de componentes instalados na imagem está listada abaixo) pré-instalados. A imagem é criada com base na imagem de base do Debian 12 fornecida pelo Google mais recente e usa o gerenciador de componentes para instalar os componentes. Essa imagem oferece suporte às plataformaslinux/amd
elinux/arm
. Para instalar versões específicas do gcloud, use a tag:VERSION-debian_component_based
.
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 do gcloud, seu ambiente poderá apresentar as seguintes mudanças importantes:
- Atualizações de versão do SDK Google Cloud, que podem mudar o comportamento da ferramenta.
- Atualizações na lista de componentes instalados.
Para evitar possíveis mudanças importantes, recomendamos que seu ambiente de produção use uma das seguintes opções:
- Uma tag com versão, como
:496.0.0-stable
- Um hash de imagem específico, como:
gcr.io/google.com/cloudsdktool/google-cloud-cli@sha256:9c0efc06918d5405b13bfe4bb5ce1d98ea4695cc703446e9e0aa0ee8800622df
- Hospedar a imagem no seu próprio repositório
Também é preciso atualizar as imagens periodicamente para receber a versão mais recente do gcloud.
Confira a versão mais recente da Google Cloud CLI e todas as versões anteriores.
Componentes instalados em cada tag
Componente | :stable | :alpine | :emulators | :latest | :slim | :debian_component_based |
---|---|---|---|---|---|---|
Extensões do Go no App Engine | x | x | ||||
Appctl | x | |||||
Ferramenta de linha de comando do BigQuery | x | x | x | x | x | x |
Python 3.9 agrupado | 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 | |||
Emulador do Spanner | x | x | ||||
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 |
Google Cloud Ferramenta de hash CRC32C | x | x | x | x | x | x |
Kustomize | x | |||||
Minikube | x | |||||
CLI do Nomos | x | |||||
Assistente de extração da API On-Demand Scanning | x | x | ||||
Skaffold | x | |||||
anthos-auth | x | |||||
Comandos gcloud alpha | x | x | x | x | ||
Comandos beta do gcloud | x | x | x | x | ||
Extensões Java do gcloud app | x | |||||
Extensões Python do app gcloud | x | |||||
Extensões Python do app gcloud (bibliotecas extras) | x | x | ||||
gke-gcloud-auth-plugin | x | x | ||||
kpt | x | x | ||||
kubectl | x | x |
Como instalar uma imagem do Docker
A imagem do Docker está hospedada no
Artifact Registry
com o 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
.
Para usar a imagem da versão estável da Google Cloud CLI,
gcr.io/google.com/cloudsdktool/google-cloud-cli:stable
, extraia-a do Artifact Registry executando o seguinte comando:docker pull gcr.io/google.com/cloudsdktool/google-cloud-cli:489.0.0-stable
Também é possível usar o hash da imagem para extrair uma imagem específica do Docker do repositório. Para extrair a mesma imagem do exemplo anterior (
:489.0.0-stable
) usando o hash da imagem, execute o seguinte comando:docker pull gcr.io/google.com/cloudsdktool/google-cloud-cli@sha256:589a0db8919614ef919dfd6ed89127211b4b6bf5ee6a2e2ce92abf33cbfe49d8
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 versão mais recente, verifique a instalação executando o seguinte comando:docker run --rm gcr.io/google.com/cloudsdktool/google-cloud-cli:stable gcloud version
Como fazer a autenticação com a imagem do Docker da Google Cloud CLI
Faça a autenticação com a imagem do Docker da Google Cloud CLI executando um dos seguintes comandos:
Faça a autenticação do 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 será selecionado sempre que você abrir 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 executando 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 você quiser fazer a autenticação usando uma conta de serviço, use a propriedade
auth/credential_file_override
para definir um caminho para uma conta de serviço montada. Em seguida, atualize a configuração para ler a conta de serviço montada usando a variável de ambienteCLOUDSDK_CONFIG
.No exemplo abaixo, a configuração
mycloud
já tem oauth/credential_file_override
definido. A configuração aponta para um arquivo de certificado presente no contêiner como uma montagem de volume separada.$ 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. A abordagem para instalar outros componentes varia de acordo com o tipo de imagem de base.
Imagens baseadas no Debian
Por padrão, as imagens estáveis (:stable
e :VERSION-stable
) não têm
componentes instalados além de bq
e gsutil
. Para instalar outros
componentes para a imagem estável, siga um destes procedimentos:
- Como criar sua própria imagem usando o Dockerfile da imagem
:stable
: instale pacotes que não estão disponíveis diretamente peloapt-get
, ou seja, o mecanismo do Docker. - Instalar pacotes ou componentes adicionais no momento da execução: personalize sua imagem sem hospedá-la.
Criar sua própria imagem usando o Dockerfile da imagem :stable
Para criar sua própria imagem com um componente adicional do :stable
, clone
o diretório cloud-sdk-docker
do GitHub e use o comando docker build
para criar
a imagem do Docker :stable
do Dockerfile com o argumento
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 .
Instalar pacotes ou componentes adicionais no momento da execução
Se você extraiu a imagem do Docker stable
, poderá instalar os seguintes
componentes adicionais durante a execução:
- componentes do gcloud usando a variável de ambiente
COMPONENTS
. - 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 pacotes apt-packages curl
e gcc
enquanto a imagem do Docker está sendo executada,
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 componentes adicionais para imagens baseadas em Alpine, crie um Dockerfile
que use a imagem cloud-sdk
como a imagem de base.
Por exemplo, para adicionar os componentes kubectl
e app-engine-java
:
- 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
- Crie a imagem executando o seguinte comando:
docker build -t my-cloud-sdk-docker:alpine .
Para imagens baseadas no Alpine, é necessário instalar manualmente as dependências de outros componentes.
Migrar para a imagem :stable
Se você estiver usando as imagens :latest
, :slim
, :emulators
, :alpine
e
:debian_component_based
do Docker, recomendamos migrar para
a imagem :stable
baseada no Debian para um tamanho de imagem menor e correções de segurança
melhores. Para saber as etapas de migração para a imagem :stable
, consulte
Como migrar para a imagem :stable
.
Como receber suporte para imagens
As imagens hospedadas no Artifact Registry fornecem 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 você precisar de uma imagem com outros componentes, pacotes ou ferramentas, 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 uma
imagem do Docker da CLI do Google Cloud, provavelmente está tentando buscar uma tag
de imagem que foi descontinuada e removida. Verifique as
opções de imagem do Docker para conferir as opções de imagem do Docker disponíveis
e migre para uma das tags compatíveis.
Quais são os casos de uso em que não é possível estender diretamente a imagem do Docker :stable
para oferecer suporte ao 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 adequar ao seu fluxo de trabalho e as opções de correção:
Casos de uso | Opções de correção |
---|---|
Os 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 esses pacotes na imagem do Docker :stable manualmente. |
O que você precisa 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) são mitigadas antes de cada nova versão do gcloud. No entanto, se o scanner detectou vulnerabilidades nas imagens do Docker da CLI do Google Cloud que não foram resolvidas, você pode registrar um bug que inclua 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 Alpine Linux.
Por que há imagens sem tags no repositório do Artifact Registry?
As imagens do Docker da CLI do Google Cloud com as tags :stable
, :alpine
, :emulators
e :debian_component_based
são compatíveis com as plataformas arm64 e amd64. As imagens
são criadas com um processo de build de várias arquiteturas, que combina imagens
específicas da arquitetura
em um único manifest. O manifesto também inclui
imagens de atestado
específicas da plataforma. O processo de build de várias arquiteturas só adiciona a tag à imagem final do manifesto,
mas não marca as imagens específicas da arquitetura ou de atestado
individual. Como resultado, é possível que imagens sem tags apareçam no repositório do
Artifact Registry. Essas imagens não são destinadas ao uso e podem ser ignoradas
com segurança.