La imagen de Docker de Google Cloud CLI te permite extraer una versión específica de gcloud CLI como imagen de Docker de Artifact Registry y ejecutar rápidamente comandos de Google Cloud CLI en un contenedor aislado y configurado correctamente.
La imagen de Docker de Google Cloud CLI es la CLI de gcloud instalada sobre una imagen de Debian o Alpine. Las imágenes de Docker de la CLI de Google Cloud permiten usar gcloud y sus componentes incluidos sin tener que instalar gcloud manualmente en tu máquina local.
Opciones de imagen Docker
Hay seis imágenes de Docker de Google Cloud CLI, y todas instalarán las herramientas de línea de comandos gcloud
, gsutil
y bq
. Te recomendamos que instales la imagen :stable
para crear un entorno mínimo. También puedes usar la imagen estable como imagen base para tus propias implementaciones, lo que te ofrece la flexibilidad de instalar solo los componentes y paquetes que necesites en tu imagen:
:stable
,:VERSION-stable
: proporciona una instalación de gcloud con los componentesgsutil
ybq
. La imagen se basa en la imagen base de Debian 12 más reciente proporcionada por Google. Esta imagen es compatible con las plataformaslinux/amd
ylinux/arm
. Para instalar versiones específicas de gcloud, usa la etiqueta:VERSION-stable
.
Si quieres usar una imagen basada en Alpine, puedes instalar la siguiente imagen:
:alpine
y:VERSION-alpine
: son similares a la versión estable, pero se basan en la imagen base más reciente de Alpine 3.20. Esta imagen es compatible con las plataformaslinux/amd
ylinux/arm
. Para instalar versiones específicas de gcloud, usa la etiqueta:VERSION-alpine
.
Si quieres imágenes con componentes o paquetes adicionales preinstalados, puedes instalar una de las siguientes opciones:
:emulators
y:VERSION-emulators
: similar a la versión estable, pero con todos los componentes del emulador. La imagen se basa en la imagen base de Debian 12 más reciente proporcionada por Google y usa el gestor de componentes para instalar los componentes. Esta imagen es compatible con las plataformaslinux/amd
ylinux/arm
. Para instalar versiones específicas de gcloud, usa la etiqueta:VERSION-emulators
.:latest
,:VERSION
: similar a la versión estable, pero con componentes adicionales preinstalados. (La lista de componentes instalados en la imagen se muestra más abajo). La imagen se basa en la imagen base de Debian 12 proporcionada por Google más reciente y usa paquetes deb para instalar los componentes. Esta imagen es compatible con las plataformaslinux/amd
ylinux/arm
. Para instalar versiones específicas de gcloud, usa la etiqueta:VERSION
.:slim
y:VERSION-slim
: son similares a la versión estable, pero incluyen paquetes de terceros adicionales, comocurl
,python3-crcmod
,apt-transport-https
,lsb-release
,openssh-client
,git
,make
ygnupg
. Esta imagen se ha creado a partir de la imagen base de Debian 12 más reciente proporcionada por Google. Esta imagen es compatible con las plataformaslinux/amd
ylinux/arm
. Para instalar versiones específicas de gcloud, usa la etiqueta:VERSION-slim
.:debian_component_based
y:VERSION-debian_component_based
: similar a la versión estable, pero con componentes adicionales preinstalados (la lista de componentes instalados en la imagen se muestra más abajo). La imagen se basa en la imagen base de Debian 12 más reciente proporcionada por Google y usa el gestor de componentes para instalar los componentes. Esta imagen es compatible con las plataformaslinux/amd
ylinux/arm
. Para instalar versiones específicas de gcloud, usa la etiqueta:VERSION-debian_component_based
.
Usar una versión específica en producción
Si usas una etiqueta que no está vinculada a una versión específica de gcloud, tu entorno puede experimentar los siguientes posibles cambios incompatibles:
- Actualizaciones de la versión del SDK de Google Cloud, que pueden cambiar el comportamiento de la herramienta.
- Actualizaciones en la lista de componentes instalados.
Para evitar posibles cambios que provoquen errores, te recomendamos que tu entorno de producción utilice una de las siguientes opciones:
- Una etiqueta con versión, como
:496.0.0-stable
- Un hash de imagen específico, como
gcr.io/google.com/cloudsdktool/google-cloud-cli@sha256:9c0efc06918d5405b13bfe4bb5ce1d98ea4695cc703446e9e0aa0ee8800622df
- Aloja la imagen en tu propio repositorio
También debes actualizar las imágenes periódicamente para obtener la versión más reciente de gcloud.
Consulta la última versión de Google Cloud CLI y todas las versiones anteriores de Google Cloud CLI.
Componentes instalados en cada etiqueta
Componente | :stable | :alpine | :emulators | :latest | :slim | :debian_component_based |
---|---|---|---|---|---|---|
Extensiones de Go para App Engine | x | x | ||||
Appctl | x | |||||
Herramienta de línea de comandos de BigQuery | x | x | x | x | x | x |
Python incluido | x | x | x | x | x | x |
Herramienta de línea de comandos de Bigtable | x | x | ||||
Emulador de Bigtable | x | x | x | |||
Emulador de Cloud Datastore | x | x | x | |||
Emulador de Cloud Firestore | x | x | ||||
Emulador de Cloud Pub/Sub | x | x | x | |||
Emulador de Spanner | x | x | ||||
Herramienta de línea de comandos de Cloud Storage | x | x | x | x | x | x |
Bibliotecas principales de la CLI de Google Cloud | x | x | x | x | x | x |
Google Cloud Herramienta de hash CRC32C | x | x | x | x | x | x |
Kustomize | x | |||||
Minikube | x | |||||
CLI de Nomos | x | |||||
Asistente de extracción de la API On-Demand Scanning | x | x | ||||
Skaffold | x | |||||
anthos-auth | x | |||||
Comandos alfa de gcloud | x | x | x | x | ||
Comandos beta de gcloud | x | x | x | x | ||
Extensiones de Java de gcloud app | x | |||||
Extensiones de Python de gcloud app | x | |||||
Extensiones de Python de gcloud app (bibliotecas adicionales) | x | x | ||||
gke-gcloud-auth-plugin | x | x | ||||
KPT | x | x | ||||
kubectl | x | x |
Instalar una imagen de Docker
La imagen Docker está alojada en Artifact Registry con el siguiente nombre de repositorio: gcr.io/google.com/cloudsdktool/google-cloud-cli
. Las imágenes también están disponibles en los repositorios us.gcr.io
, eu.gcr.io
y asia.gcr.io
.
Para usar la imagen de la versión estable de Google Cloud CLI,
gcr.io/google.com/cloudsdktool/google-cloud-cli:stable
, descárgala de Artifact Registry ejecutando el siguiente comando:docker pull gcr.io/google.com/cloudsdktool/google-cloud-cli:489.0.0-stable
También puedes usar el hash de la imagen para extraer una imagen Docker específica del repositorio. Para descargar la misma imagen del ejemplo anterior (
:489.0.0-stable
) con el hash de la imagen, ejecuta el siguiente comando:docker pull gcr.io/google.com/cloudsdktool/google-cloud-cli@sha256:589a0db8919614ef919dfd6ed89127211b4b6bf5ee6a2e2ce92abf33cbfe49d8
Para verificar la instalación, ejecuta el siguiente comando:
docker run --rm gcr.io/google.com/cloudsdktool/google-cloud-cli:489.0.0-stable gcloud version
Si has usado la etiqueta
:stable
flotante (que siempre apunta a la última versión), verifica la instalación ejecutando el siguiente comando:docker run --rm gcr.io/google.com/cloudsdktool/google-cloud-cli:stable gcloud version
Autenticarse con la imagen de Docker de Google Cloud CLI
Autentícate con la imagen de Docker de Google Cloud CLI ejecutando uno de los siguientes comandos:
Autentica gcloud con tus credenciales de usuario ejecutando
gcloud auth login
:docker run -ti --name gcloud-config gcr.io/google.com/cloudsdktool/google-cloud-cli:stable gcloud auth login
Si necesitas autenticar aplicaciones que usen las APIs de Google Cloud , pasa la opción
--update-adc
:docker run -ti --name gcloud-config gcr.io/google.com/cloudsdktool/google-cloud-cli:stable gcloud auth login --update-adc
Para definir un proyecto predeterminado que se seleccione cada vez que abras el contenedor, ejecuta el siguiente 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'
Una vez que te hayas autenticado correctamente, las credenciales se conservarán en el volumen de
gcloud-config container
.Para verificarlo, enumera la instancia de proceso con las credenciales ejecutando el contenedor con
--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
Si quieres autenticarte con una cuenta de servicio, usa la propiedad
auth/credential_file_override
para definir una ruta a una cuenta de servicio montada. A continuación, actualiza la configuración para leer la cuenta de servicio montada mediante la variable de entornoCLOUDSDK_CONFIG
.En el siguiente ejemplo, la configuración de
mycloud
ya tiene el valorauth/credential_file_override
. La configuración apunta a un archivo de certificado que se encuentra en el contenedor como un montaje de volumen independiente.$ 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 obtener más información sobre cómo definir variables de entorno, consulta los siguientes artículos:
Instalando componentes adicionales
Puedes instalar componentes adicionales en la imagen de Docker de Google Cloud CLI. El método para instalar componentes adicionales varía en función del tipo de imagen base subyacente.
Imágenes basadas en Debian
De forma predeterminada, las imágenes estables (:stable
y :VERSION-stable
) no tienen ningún componente instalado, excepto bq
y gsutil
. Para instalar componentes adicionales de la imagen estable, haz una de las siguientes acciones:
- Crear tu propia imagen con el Dockerfile de la imagen
:stable
: instala paquetes que no estén disponibles directamente a través deapt-get
, como el motor de Docker. - Instalar paquetes o componentes adicionales en tiempo de ejecución: personaliza tu imagen sin alojarla.
Crear tu propia imagen con el Dockerfile de la imagen :stable
Para crear tu propia imagen con un componente adicional de :stable
, puedes clonar el directorio cloud-sdk-docker de GitHub y usar el comando docker build
para crear la imagen Docker de :stable
a partir del Dockerfile con el argumento INSTALL_COMPONENTS
. Por ejemplo, para añadir componentes datastore-emulator
, sigue estos pasos:
# 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 paquetes o componentes adicionales durante el tiempo de ejecución
Si has extraído la imagen de Docker stable
, puedes instalar los siguientes componentes adicionales durante el tiempo de ejecución:
- gcloud components mediante la variable de entorno
COMPONENTS
. - apt-packages mediante la variable de entorno
APT_PACKAGES
.
Por ejemplo, si quieres instalar los componentes cbt
y kpt
en el tiempo de ejecución, puedes ejecutar el siguiente 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 los paquetes apt curl
y gcc
mientras se ejecuta la imagen de Docker, ejecuta el siguiente comando:
docker run -e APT_PACKAGES='curl gcc' \
gcr.io/google.com/cloudsdktool/google-cloud-cli:stable gcloud version
Imágenes basadas en Alpine
Para instalar componentes adicionales en imágenes basadas en Alpine, crea un Dockerfile que utilice la imagen cloud-sdk
como imagen base.
Por ejemplo, para añadir los componentes kubectl
y app-engine-java
, sigue estos pasos:
- Crea el Dockerfile de la siguiente manera:
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
- Compila la imagen ejecutando el siguiente comando:
docker build -t my-cloud-sdk-docker:alpine .
En el caso de las imágenes basadas en Alpine, debes instalar manualmente las dependencias de los componentes adicionales.
Migrar a la imagen :stable
Si usas las imágenes de Docker :latest
, :slim
, :emulators
, :alpine
y :debian_component_based
, te recomendamos que migres a la imagen :stable
basada en Debian para reducir el tamaño de la imagen y mejorar los parches de seguridad. Para ver los pasos que debes seguir para migrar a la imagen de :stable
, consulta el artículo Migrar a la imagen de :stable
.
Obtener asistencia con imágenes
Las imágenes alojadas en Artifact Registry proporcionan instalaciones totalmente funcionales de la CLI de Google Cloud. Si encuentras errores o problemas relacionados con las imágenes de Docker, puedes crear una incidencia de asistencia.
Si necesitas una imagen con componentes, paquetes o herramientas adicionales, puedes crear tu propia capa de imagen sobre la imagen Docker de la CLI de Google Cloud.
Solución de problemas
¿Qué debes hacer si aparece un error failed to fetch <image-tag>
al extraer la imagen de Docker?
Si recibes un error failed to fetch <image-tag>
al intentar extraer una imagen de Docker de la CLI de Google Cloud, es muy probable que estés intentando obtener una etiqueta de imagen que se ha retirado. Consulta las opciones de imagen Docker para ver las opciones de imagen Docker disponibles y migra a una de las etiquetas admitidas.
¿En qué casos no puedes ampliar directamente la imagen de :stable
Docker para que sea compatible con tu flujo de trabajo actual?
En la siguiente tabla se indican los casos prácticos en los que no puedes ampliar directamente la imagen de Docker :stable
para adaptarla a tu flujo de trabajo, así como las opciones para solucionar el problema:
Casos prácticos | Opciones de corrección |
---|---|
Los paquetes de terceros, como docker o docker-buildx, no se incluyen en la imagen :stable . |
Si necesitas estos paquetes de terceros, crea tu propia imagen o instala estos paquetes manualmente en la imagen Docker :stable . |
¿Qué debes hacer si tu escáner ha encontrado vulnerabilidades en las imágenes de Docker?
Las imágenes de Docker de Google Cloud CLI se alojan en Artifact Registry. Las imágenes se analizan a diario y las vulnerabilidades y exposiciones comunes (CVEs) se mitigan antes de cada nuevo lanzamiento de gcloud. Sin embargo, si tu escáner ha detectado vulnerabilidades en las imágenes de Docker de la CLI de Google Cloud que no se han resuelto, puedes registrar un error que incluya la siguiente información:
- El tipo de vulnerabilidad.
- La ubicación exacta de la imagen.
Las vulnerabilidades de las imágenes del SO base solo se abordan para asegurar que las imágenes Docker de la CLI de Google Cloud usen versiones recientes y estables de Debian o Alpine Linux.
¿Por qué hay imágenes sin etiquetas en el repositorio de Artifact Registry?
Las imágenes de Docker de Google Cloud CLI con las etiquetas :stable
, :alpine
, :emulators
y :debian_component_based
admiten las plataformas arm64 y amd64. Las imágenes se compilan con un proceso de compilación de varias arquitecturas, que combina imágenes específicas de la arquitectura en un solo manifiesto.
El manifiesto también incluye imágenes de atestación específicas de la plataforma. El proceso de compilación de varias arquitecturas solo añade etiquetas a la imagen de manifiesto final, pero no etiqueta las imágenes específicas de cada arquitectura ni las imágenes de certificación. Como resultado, es posible que veas imágenes sin etiquetas en el repositorio de Artifact Registry. Estas imágenes no están pensadas para usarse y puedes ignorarlas sin problemas.
¿Dónde puedo obtener información sobre los paquetes de terceros retirados de las imágenes de Docker de gcloud?
Puedes consultar información sobre todos los paquetes de terceros retirados en los anuncios de GitHub.