Como migrar para a imagem :stable

Se você estiver usando :latest, :alpine, :emulators, :latest e :slim e :debian_component_based imagens Docker, recomendamos que você migre para imagem :stable baseada em debian para um tamanho de imagem menor e mais segurança e correções. Para fazer a transição para o uso da imagem :stable, você pode estender a imagem do Docker :stable para a imagem baseada em Debian que está usando.

Em alguns casos, como a instalação de dependências incompatíveis mais antigas, como o Python2 ou JDKs mais antigos, etc., a extensão da imagem :stable nem sempre é viável. Em que caso você tenha que criar seu próprio Dockerfile.

Como estender a imagem do Docker :stable

É possível usar a imagem do Docker :stable como uma imagem base e instalar outros componentes e pacotes apt para estendê-la a outras imagens do Docker baseadas no Debian (por exemplo, :latest, :emulators e :slim). Para estender a imagem do Docker :stable, podemos fazer uma das seguintes ações:

Estender a imagem de base :stable personalizando-a no momento da execução

Estenda a imagem do Docker :stable para usar como :latest, :emulators ou :slim, personalizando-a no momento da execução.

Execute o comando docker run abaixo para estender a imagem Docker :stable à imagem Docker :latest no momento da execução:

# 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

Execute o comando a seguir para estender a imagem do Docker :stable. para a imagem :emulators do Docker no ambiente de execução:

# 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

Você pode estender a imagem Docker :stable como a imagem Docker :slim executando o seguinte 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

Como estender a imagem de base :stable criando seu próprio Dockerfile

É possível estender a imagem do Docker :stable criando seu próprio Dockerfile com a imagem :stable como a imagem de base e, em seguida, criando a imagem do Docker com o comando docker build.

Para converter a imagem :stable em :latest, faça o seguinte:

  1. Crie seu próprio Dockerfile a partir de :stable instalando o Dockerfile componentes e pacotes:

    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
    
  2. Crie o Dockerfile para ter sua própria imagem do Docker :latest:

    $ docker build -t my-cloud-sdk-docker:latest .
    

Para converter a imagem :stable em :emulators, faça o seguinte:

  1. Crie o Dockerfile com os componentes e pacotes necessários como:

    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
    
  2. Crie o Dockerfile executando o comando:

    $ docker build -t my-cloud-sdk-docker:emulators .
    

Para converter a imagem :stable em :slim, faça o seguinte:

  1. Crie um Dockerfile usando :stable como imagem de 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
    
  2. Crie o Dockerfile executando o seguinte comando:

    $ docker build -t my-cloud-sdk-docker:slim .