Si usas las imágenes de Docker :latest
, :alpine
, :emulators
, :latest
, :slim
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 migrar al uso de la imagen :stable
, puedes
extender la imagen de Docker :stable
a la imagen basada en Debian que usas.
En algunos casos (es decir, instalar dependencias incompatibles más antiguas, como python2 o JDKs más antiguos, etc.), no siempre es posible extender la imagen de :stable
. En cuyo caso, es posible que debas compilar tu propio Dockerfile.
Cómo extender la imagen de Docker :stable
Puedes usar la imagen de Docker :stable
como imagen base e instalar componentes y paquetes apt adicionales para extenderla a las otras imágenes de Docker basadas en Debian (es decir, :latest
, :emulators
y :slim
). Para extender la imagen de Docker :stable
, podemos hacer una de las siguientes acciones:
- Cómo extender la imagen base de
:stable
mediante la personalización en el tiempo de ejecución - Cómo compilar tu propio Dockerfile para extender la imagen base de
:stable
Cómo extender la imagen base de :stable
mediante la personalización en el tiempo de ejecución
Puedes extender la imagen de Docker :stable
para usarla como imagen :latest
, :emulators
o :slim
personalizándola en el tiempo de ejecución.
Ejecuta el siguiente comando docker run
para extender la imagen de Docker :stable
a la imagen de Docker :latest
durante el tiempo de ejecución:
# Running as latest
$ docker run -e APT_PACKAGES='curl python3-crcmod apt-transport-https lsb-release openssh-client git make gnupg' \
-e COMPONENTS='google-cloud-cli-datastore-emulator google-cloud-cli-pubsub-emulator google-cloud-cli-bigtable-emulator google-cloud-cli-firestore-emulator google-cloud-cli-spanner-emulator google-cloud-cli-cbt google-cloud-cli-kpt google-cloud-cli-local-extract google-cloud-cli-gke-gcloud-auth-plugin kubectl' \
gcr.io/google.com/cloudsdktool/google-cloud-cli:stable gcloud version
# For iterative run
$ docker run -e APT_PACKAGES='curl python3-crcmod apt-transport-https lsb-release openssh-client git make gnupg' \
-e COMPONENTS='google-cloud-cli-datastore-emulator google-cloud-cli-pubsub-emulator google-cloud-cli-bigtable-emulator google-cloud-cli-firestore-emulator google-cloud-cli-spanner-emulator google-cloud-cli-cbt google-cloud-cli-kpt google-cloud-cli-local-extract google-cloud-cli-gke-gcloud-auth-plugin kubectl' \
-it gcr.io/google.com/cloudsdktool/google-cloud-cli:stable bash
Puedes ejecutar el siguiente comando para extender la imagen de Docker :stable
a la imagen de Docker :emulators
durante el tiempo de ejecución:
# Running as emulators
$ docker run -e APT_PACKAGES='curl python3-crcmod lsb-release gnupg bash' \
-e COMPONENTS='google-cloud-cli-datastore-emulator google-cloud-cli-pubsub-emulator google-cloud-cli-bigtable-emulator google-cloud-cli-firestore-emulator google-cloud-cli-spanner-emulator' \
gcr.io/google.com/cloudsdktool/google-cloud-cli:stable gcloud version
# For iterative run
$ docker run -e APT_PACKAGES='curl python3-crcmod lsb-release gnupg bash' \
-e COMPONENTS='google-cloud-cli-datastore-emulator google-cloud-cli-pubsub-emulator google-cloud-cli-bigtable-emulator google-cloud-cli-firestore-emulator google-cloud-cli-spanner-emulator' \
-it gcr.io/google.com/cloudsdktool/google-cloud-cli:stable bash
Para extender la imagen de Docker :stable
como la imagen de Docker :slim
, ejecuta el siguiente comando docker run
:
# Running as slim
$ docker run -e APT_PACKAGES='curl gcc python3-crcmod python3-pip apt-transport-https lsb-release openssh-client git gnupg' \
gcr.io/google.com/cloudsdktool/google-cloud-cli:stable gcloud version
# For iterative run
$ docker run -e APT_PACKAGES='curl gcc python3-crcmod python3-pip apt-transport-https lsb-release openssh-client git gnupg' \
-it gcr.io/google.com/cloudsdktool/google-cloud-cli:stable bash
Cómo compilar tu propio Dockerfile para extender la imagen base de :stable
Para extender la imagen de Docker de :stable
, crea tu propio
Dockerfile con la imagen de :stable
como imagen base y, luego, compila la imagen de
Docker con el comando docker build
.
Para convertir la imagen :stable
en la imagen :latest
, haz lo siguiente:
Crea tu propio Dockerfile desde
:stable
instalando los componentes y paquetes necesarios:FROM docker:27.1.1 as static-docker-source FROM gcr.io/google.com/cloudsdktool/google-cloud-cli:stable COPY --from=static-docker-source /usr/local/bin/docker /usr/local/bin/docker COPY --from=static-docker-source /usr/local/libexec/docker/cli-plugins/docker-buildx /usr/local/libexec/docker/cli-plugins/docker-buildx RUN apt-get update -qqy && apt-get -qqy upgrade && apt-get install -qqy \ curl \ python3-crcmod \ apt-transport-https \ lsb-release \ openssh-client \ git \ make \ gnupg && \ export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)" && \ export CLOUD_SDK_VERSION=$(gcloud version | grep "Google Cloud SDK" | grep -oE '[^ ]+$') && \ echo "deb https://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" > /etc/apt/sources.list.d/google-cloud-sdk.list && \ curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - && \ apt-get update && \ apt-get install -y google-cloud-cli-datastore-emulator=${CLOUD_SDK_VERSION}-0 \ google-cloud-cli-pubsub-emulator=${CLOUD_SDK_VERSION}-0 \ google-cloud-cli-bigtable-emulator=${CLOUD_SDK_VERSION}-0 \ google-cloud-cli-firestore-emulator=${CLOUD_SDK_VERSION}-0 \ google-cloud-cli-spanner-emulator=${CLOUD_SDK_VERSION}-0 \ google-cloud-cli-cbt=${CLOUD_SDK_VERSION}-0 \ google-cloud-cli-kpt=${CLOUD_SDK_VERSION}-0 \ google-cloud-cli-local-extract=${CLOUD_SDK_VERSION}-0 \ google-cloud-cli-gke-gcloud-auth-plugin=${CLOUD_SDK_VERSION}-0 \ kubectl
Compila el Dockerfile para obtener tu propia imagen de Docker de
:latest
:$ docker build -t my-cloud-sdk-docker:latest .
Para convertir la imagen :stable
en la imagen :emulators
, haz lo siguiente:
Crea el Dockerfile con los componentes y paquetes necesarios de la siguiente manera:
FROM gcr.io/google.com/cloudsdktool/google-cloud-cli:stable RUN apt-get update -qqy && apt-get -qqy upgrade && apt-get install -qqy \ curl \ python3-crcmod \ lsb-release \ gnupg \ bash && \ export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)" && \ export CLOUD_SDK_VERSION=$(gcloud version | grep "Google Cloud SDK" | grep -oE '[^ ]+$') && \ echo "deb https://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" > /etc/apt/sources.list.d/google-cloud-sdk.list && \ curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - && \ apt-get update && \ apt-get install -y google-cloud-cli-datastore-emulator=${CLOUD_SDK_VERSION}-0 \ google-cloud-cli-pubsub-emulator=${CLOUD_SDK_VERSION}-0 \ google-cloud-cli-bigtable-emulator=${CLOUD_SDK_VERSION}-0 \ google-cloud-cli-firestore-emulator=${CLOUD_SDK_VERSION}-0 \ google-cloud-cli-spanner-emulator=${CLOUD_SDK_VERSION}-0
Ejecuta el siguiente comando para compilar el Dockerfile:
$ docker build -t my-cloud-sdk-docker:emulators .
Para convertir la imagen :stable
en la imagen :slim
, haz lo siguiente:
Crea un Dockerfile con
:stable
como imagen base:FROM docker:27.1.1 as static-docker-source FROM gcr.io/google.com/cloudsdktool/google-cloud-cli:stable COPY --from=static-docker-source /usr/local/bin/docker /usr/local/bin/docker COPY --from=static-docker-source /usr/local/libexec/docker/cli-plugins/docker-buildx /usr/local/libexec/docker/cli-plugins/docker-buildx RUN apt-get update -qqy && apt-get -qqy upgrade && apt-get install -qqy \ curl \ python3-crcmod \ apt-transport-https \ lsb-release \ openssh-client \ git \ make \ gnupg
Ejecuta el siguiente comando para compilar el Dockerfile:
$ docker build -t my-cloud-sdk-docker:slim .