Zum :stable-Image migrieren

Wenn du :latest, :alpine, :emulators, :latest, :slim verwendest und :debian_component_based Docker-Images erstellen, empfehlen wir, dass Sie zu debian-basiertes :stable-Image für eine kleinere Image-Größe und mehr Sicherheit Fehlerbehebungen. So wechseln Sie zum :stable-Bild: Erweitern Sie das Docker-Image :stable mit dem debian-basierten Image, das Sie verwenden.

In einigen Fällen (z.B. bei der Installation älterer inkompatibler Abhängigkeiten wie python2 oder ältere jdks usw.), ist es nicht immer möglich, das :stable-Image zu erweitern. In diesem Fall müssen Sie möglicherweise Ihr eigenes Dockerfile erstellen.

Docker-Image :stable erweitern

Sie können das Docker-Image :stable als Basis-Image verwenden und zusätzliche Komponenten und APT-Pakete installieren, um es in die anderen debianbasierten Docker-Images (:latest, :emulators und :slim) zu erweitern. Um das Docker-Image :stable zu erweitern, haben Sie folgende Möglichkeiten:

:stable-Basis-Image durch Anpassung zur Laufzeit erweitern

Sie können das Docker-Image :stable erweitern, um es als :latest, :emulators zu verwenden. oder :slim-Bild, indem Sie es zur Laufzeit anpassen.

Führen Sie den folgenden docker run-Befehl aus, um den Docker-Befehl :stable zu erweitern. Image während der Laufzeit in das Docker-Image :latest ein:

# 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

Mit dem folgenden Befehl können Sie das Docker-Image :stable erweitern. in das Docker-Image :emulators zur Laufzeit ein:

# 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

Sie können das Docker-Image :stable als das Docker-Image :slim erweitern, indem Sie und führen Sie den folgenden docker run-Befehl aus:

# 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

:stable-Basis-Image durch Erstellen eines eigenen Dockerfiles erweitern

Sie können das :stable-Docker-Image erweitern, indem Sie ein eigenes Dockerfile mit dem :stable-Image als Basis-Image erstellen und dann das Docker-Image mit dem Befehl docker build erstellen.

So wandeln Sie das :stable-Image in das :latest-Image um:

  1. Erstellen Sie ein eigenes Dockerfile aus :stable, indem Sie die erforderlichen Komponenten und Pakete installieren:

    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. Erstelle das Dockerfile, um ein eigenes :latest-Docker-Image zu erhalten:

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

So wandeln Sie das :stable-Image in das :emulators-Image um:

  1. Erstellen Sie das Dockerfile mit den erforderlichen Komponenten und Paketen als:

    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. Erstellen Sie das Dockerfile, indem Sie den folgenden Befehl ausführen:

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

So konvertieren Sie das Image :stable in das Image :slim:

  1. Erstellen Sie ein Dockerfile mit :stable als Basis-Image:

    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. Erstellen Sie das Dockerfile mit dem folgenden Befehl:

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