Migrer vers l'image :stable

Si vous utilisez les images Docker :latest, :alpine, :emulators, :latest, :slim et :debian_component_based, nous vous recommandons de migrer vers l'image :stable basée sur Debian pour réduire la taille de l'image et améliorer les correctifs de sécurité. Pour passer à l'utilisation de l'image :stable, vous pouvez étendre l'image Docker :stable à l'image basée sur Debian que vous utilisez.

Dans certains cas (par exemple, lors de l'installation d'anciennes dépendances incompatibles telles que python2 ou d'anciennes JDK, etc.), il n'est pas toujours possible d'étendre l'image :stable. Dans ce cas, vous devrez peut-être créer votre propre fichier Dockerfile.

Étendre l'image Docker :stable

Vous pouvez utiliser l'image Docker :stable comme image de base et installer des composants et des packages apt supplémentaires pour l'étendre aux autres images Docker basées sur Debian (par exemple, :latest, :emulators et :slim). Pour étendre l'image Docker :stable, vous pouvez effectuer l'une des opérations suivantes :

Étendre l'image de base :stable en la personnalisant lors de l'exécution

Vous pouvez étendre l'image Docker :stable pour l'utiliser comme image :latest, :emulators ou :slim en la personnalisant au moment de l'exécution.

Personnaliser l'image :latest

Exécutez la commande docker run suivante pour étendre l'image Docker :stable à l'image Docker :latest au moment de l'exécution :

$ 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

Personnaliser l'image :emulators

Vous pouvez exécuter la commande suivante pour étendre l'image Docker :stable dans l'image Docker :emulators au moment de l'exécution :

$ 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

Personnaliser l'image :slim

Vous pouvez étendre l'image Docker :stable en tant qu'image Docker :slim en exécutant la commande docker run suivante :

$ 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

Étendre l'image :stable avec la configuration de compilation

Vous pouvez utiliser vos propres fichiers de configuration de compilation personnalisés pour étendre l'image Docker :stable et installer des packages ou des composants supplémentaires. Par exemple, si vous souhaitez étendre votre image Docker :stable pour installer les packages python3-google-auth et python3-requests, et installer le composant pubsub emulator, vous pouvez utiliser le fichier de configuration de compilation suivant.

steps:
  - id: 'extend-stable'
    name: gcr.io/google.com/cloudsdktool/google-cloud-cli:499.0.0-stable
    args:
      - gcloud
      - version
    env:
      - 'APT_PACKAGES=python3-google-auth python3-requests'
      - 'COMPONENTS=google-cloud-cli-pubsub-emulator'

Étendre l'image de base :stable en créant votre propre fichier Dockerfile

Vous pouvez étendre l'image Docker :stable en créant votre propre fichier Dockerfile avec l'image :stable comme image de base, puis en créant l'image Docker avec la commande docker build.

Créer votre propre :latest Image

Pour convertir l'image :stable en image :latest, procédez comme suit :

  1. Créez votre propre Dockerfile à partir de :stable en installant les composants et packages requis :

    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. Créez le fichier Dockerfile pour obtenir votre propre image Docker :latest :

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

Créer votre propre :emulators Image

Pour convertir l'image :stable en image :emulators, procédez comme suit :

  1. Créez le fichier Dockerfile avec les composants et packages requis comme suit :

    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. Créez le fichier Dockerfile en exécutant la commande suivante :

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

Créer votre propre :slim Image

Pour convertir l'image :stable en image :slim, procédez comme suit :

  1. Créez un fichier Dockerfile à l'aide de :stable comme image 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. Créez le fichier Dockerfile en exécutant la commande suivante :

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