La imagen de Docker de la CLI de Google Cloud te permite extraer una versión específica de gcloud CLI como una imagen de Docker desde Artifact Registry y ejecutar rápidamente comandos de Google Cloud CLI en un contenedor aislado y correctamente configurado.
La imagen de Docker de Google Cloud CLI es la gcloud CLI instalada sobre una imagen de Debian o Alpine. Las imágenes de Docker de la CLI de Google Cloud permiten el uso de gcloud y sus componentes empaquetados sin tener que instalar gcloud de forma manual en tu máquina local.
Opciones de imagen de 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 obtener un entorno mínimo. También puedes usar la imagen estable como imagen base para tus propias implementaciones, lo que te brinda la flexibilidad de instalar solo los componentes y paquetes que necesitas en tu imagen:
:stable
,:VERSION-stable
: Proporciona una instalación de gcloud con los componentesgsutil
ybq
. La imagen se compila en la imagen base de Debian 12 más reciente que proporciona Google. Esta imagen admite 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
,:VERSION-alpine
: Son similares a las estables, pero se compilan en la imagen base más reciente de Alpine 3.19. Esta imagen admite plataformaslinux/amd
ylinux/arm
. Para instalar versiones específicas de gcloud, usa la etiqueta:VERSION-alpine
.
Si deseas imágenes con componentes o paquetes adicionales preinstalados, puedes instalar una de las siguientes opciones:
:emulators
,:VERSION-emulators
: Similar a la versión estable, con la adición de todos los componentes del emulador. La imagen se compila en la imagen base de Debian 12 más reciente que proporciona Google y usa el administrador 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, con componentes adicionales preinstalados (la lista de componentes instalados en la imagen se indica más abajo). La imagen se compila en la imagen base de Debian 12 más reciente que proporciona Google y usa paquetes deb para instalar los componentes. 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 adicionales de terceros, comocurl
,python3-crcmod
,apt-transport-https
,lsb-release
,openssh-client
,git
,make
ygnupg
. Esta imagen se compila en la imagen base de Debian 12 más reciente que proporciona Google. Esta imagen admite plataformaslinux/amd
ylinux/arm
. Para instalar versiones específicas de gcloud, usa la etiqueta:VERSION-slim
.:debian_component_based
,:VERSION-debian_component_based
: Son similares a las imágenes estables, con componentes adicionales (la lista de componentes instalados en la imagen se indica más abajo) preinstalados. La imagen se compila en la imagen base de Debian 12 más reciente que proporciona Google y usa el administrador 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
.
Usa una versión específica en producción
Si usas una etiqueta que no está vinculada a una versión específica de gcloud, es posible que tu entorno experimente los siguientes cambios drásticos:
- Actualizaciones de versión del SDK de Google Cloud, que pueden cambiar el comportamiento de la herramienta.
- Actualizaciones de la lista de componentes instalados.
Para evitar posibles cambios drásticos, se recomienda que tu entorno de producción use cualquiera 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 versión más reciente 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 de App Engine | x | x | ||||
Appctl | x | |||||
Herramienta de línea de comandos de BigQuery | x | x | x | x | x | x |
Python 3.9 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 | |||
Spanner Emulator | x | x | ||||
Herramienta de línea de comandos de Cloud Storage | x | x | x | x | x | x |
Bibliotecas principales de Google Cloud CLI | x | x | x | x | x | x |
Herramienta de hash CRC32C de Google Cloud | x | x | x | x | x | x |
Kustomize | x | |||||
Minikube | x | |||||
CLI de Nomos | x | |||||
Ayudante de extracción de la API de 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 la app de gcloud | x | |||||
Extensiones de Python de la app de gcloud | x | |||||
Extensiones de Python de gcloud app (bibliotecas adicionales) | x | x | ||||
gke-gcloud-auth-plugin | x | x | ||||
kpt | x | x | ||||
kubectl | x | x |
Instala una imagen de Docker
La imagen de Docker se aloja 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 con 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
, extráela de Artifact Registry con el siguiente comando:docker pull gcr.io/google.com/cloudsdktool/google-cloud-cli:489.0.0-stable
También puedes usar el hash de imagen para extraer una imagen de Docker específica del repositorio. Para extraer la misma imagen del ejemplo anterior (
:489.0.0-stable
) con el hash de imagen, ejecuta el siguiente comando:docker pull gcr.io/google.com/cloudsdktool/google-cloud-cli@sha256:589a0db8919614ef919dfd6ed89127211b4b6bf5ee6a2e2ce92abf33cbfe49d8
Ejecute el siguiente comando para verificar la instalación:
docker run --rm gcr.io/google.com/cloudsdktool/google-cloud-cli:489.0.0-stable gcloud version
Si usaste la etiqueta
:stable
flotante (que siempre apunta a la versión más reciente), ejecuta el siguiente comando para verificar la instalación:docker run --rm gcr.io/google.com/cloudsdktool/google-cloud-cli:stable gcloud version
Autenticación con la imagen de Docker de Google Cloud CLI
Ejecuta uno de los siguientes comandos para autenticar con la imagen de Docker de Google Cloud CLI:
Ejecuta
gcloud auth login
para autenticar gcloud con tus credenciales de usuario:docker run -ti --name gcloud-config gcr.io/google.com/cloudsdktool/google-cloud-cli:stable gcloud auth login
Si necesitas autenticar aplicaciones que usan 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 establecer 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'
Después de haber autenticado correctamente, las credenciales se conservan en el volumen de
gcloud-config container
.Para verificar, enumera la instancia de procesamiento que usa 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 deseas autenticarte con una cuenta de servicio, usa la propiedad
auth/credential_file_override
para establecer una ruta de acceso a una cuenta de servicio activada. Luego, actualiza la configuración para leer la cuenta de servicio activada con la variable de entornoCLOUDSDK_CONFIG
.En el siguiente ejemplo, la configuración de
mycloud
ya tiene configuradoauth/credential_file_override
. La configuración apunta a un archivo de certificado que está presente dentro del contenedor como un activador 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 configurar variables de entorno, consulta los siguientes recursos:
Instala componentes adicionales
Puedes instalar componentes adicionales en la imagen de Docker de Google Cloud CLI. El enfoque para instalar componentes adicionales varía según el tipo de imagen base subyacente.
Imágenes basadas en Debian
De forma predeterminada, las imágenes estables (:stable
y :VERSION-stable
) no tienen componentes instalados distintos de bq
y gsutil
. Para instalar componentes adicionales para la imagen estable, haz una de las siguientes acciones:
- Compila tu propia imagen con el Dockerfile de la imagen
:stable
: Instala paquetes que no estén disponibles directamente a través deapt-get
, es decir, el motor de Docker. - Instalación de paquetes o componentes adicionales durante el tiempo de ejecución: Personaliza tu imagen sin alojarla.
Cómo compilar tu propia imagen con el Dockerfile de la imagen :stable
Para compilar 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 compilar
la imagen de Docker de :stable
desde el Dockerfile con el argumento INSTALL_COMPONENTS
. Por ejemplo, para agregar componentes datastore-emulator
, haz lo siguiente:
# 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 .
Instala paquetes o componentes adicionales durante el tiempo de ejecución.
Si extrajiste la imagen de Docker de stable
, puedes instalar los siguientes
componentes adicionales durante el tiempo de ejecución:
- gcloud con la variable de entorno
COMPONENTS
. - apt-packages con la variable de entorno
APT_PACKAGES
.
Por ejemplo, si deseas instalar los componentes cbt
y kpt
durante 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 ejecutas 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 para imágenes basadas en Alpine, crea un Dockerfile que use la imagen cloud-sdk
como imagen base.
Por ejemplo, para agregar componentes kubectl
y app-engine-java
, haz lo siguiente:
- 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
- Ejecuta el siguiente comando para compilar la imagen:
docker build -t my-cloud-sdk-docker:alpine .
En el caso de las imágenes basadas en Alpine, debes instalar las dependencias de los componentes adicionales de forma manual.
Cómo 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 obtener un tamaño de imagen más pequeño y correcciones de seguridad mejoradas. Para conocer los pasos para migrar a la imagen :stable
, consulta Migración a la imagen :stable
.
Cómo obtener asistencia para las imágenes
Las imágenes alojadas en Artifact Registry proporcionan instalaciones completamente funcionales de Google Cloud CLI. Si encuentras errores o problemas relacionados con las imágenes de Docker, puedes crear un ticket de asistencia.
Cuando necesites una imagen con componentes, paquetes o herramientas adicionales, puedes crear tu propia capa de imagen sobre la imagen de Docker de Google Cloud CLI.
Soluciona problemas
¿Qué debes hacer si ves un error failed to fetch <image-tag>
mientras extraes la imagen de Docker?
Si recibes un error failed to fetch <image-tag>
cuando intentas extraer una imagen de Docker de Google Cloud CLI, es probable que estés intentando recuperar una etiqueta de imagen que dejó de estar disponible y se quitó. Consulta las opciones de imagen de Docker para conocer las opciones de imagen de Docker disponibles y migra a una de las etiquetas admitidas.
¿Cuáles son los casos de uso en los que no puedes extender directamente la imagen de Docker :stable
para admitir tu flujo de trabajo actual?
En la siguiente tabla, se enumeran los casos de uso en los que no puedes extender directamente la imagen de Docker :stable
para que se adapte a tu flujo de trabajo y se enumeran las opciones para solucionar el problema:
Casos de uso | Opciones de solución |
---|---|
Los componentes app-engine (que se usan en la imagen de Docker :latest o :debian_component_based ) no son compatibles con Debian 12. |
Compila tu propia imagen a partir de una imagen de Debian (Debian 11) compatible para instalar componentes de app-engine . |
Los paquetes de terceros, como docker o docker-buildx, no se incluyen en la imagen :stable . |
Si necesitas estos paquetes de terceros, compila tu propia imagen o instálalos en la imagen de Docker de :stable de forma manual. |
¿Qué debes hacer si tu escáner encontró vulnerabilidades en las imágenes de Docker?
Las imágenes de Docker de la CLI de Google Cloud se alojan en Artifact Registry. Las imágenes se analizan a diario, y las vulnerabilidades y exposiciones comunes (CVE) se mitigan antes de cada nueva versión de gcloud. Sin embargo, si tu escáner detectó vulnerabilidades en las imágenes de Docker de Google Cloud CLI que no se resolvieron, puedes informar un error que incluya la siguiente información:
- El tipo de vulnerabilidad.
- La ubicación exacta en la imagen
Las vulnerabilidades dentro de las imágenes del SO base solo se abordan para garantizar que las imágenes de Docker de la CLI de Google Cloud usen versiones estables y recientes de Debian o Alpine Linux.