迁移到 :stable 映像

如果您使用的是 :latest:alpine:emulators:latest:slim:debian_component_based Docker 映像,我们建议您迁移到基于 Debian 的 :stable 映像,以缩减映像大小并改进安全修复。如需改用 :stable 映像,您可以将 :stable Docker 映像扩展为您使用的基于 Debian 的映像。

在某些情况下(例如,安装较旧的不兼容依赖项,如 python2 或较旧的 JDK 等),扩展 :stable 映像并不总是可行。在这种情况下,您可能需要构建自己的 Dockerfile。

扩展 :stable Docker 映像

您可以将 :stable Docker 映像用作基础映像,并安装其他组件和 apt 软件包,以将其扩展为其他基于 Debian 的 Docker 映像(即 :latest:emulators:slim)。如需扩展 :stable Docker 映像,我们可以执行以下任一操作:

通过在运行时进行自定义来扩展 :stable 基础映像

您可以通过在运行时对其进行自定义,将 :stable Docker 映像扩展为 :latest:emulators:slim 映像。

自定义为 :latest 图片

运行以下 docker run 命令,以便在运行时将 :stable Docker 映像扩展到 :latest Docker 映像:

$ 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

自定义为 :emulators 图片

您可以运行以下命令,在运行时将 :stable Docker 映像扩展到 :emulators Docker 映像:

$ 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

自定义为 :slim 图片

您可以运行以下 docker run 命令,将 :stable Docker 映像扩展为 :slim Docker 映像:

$ 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

使用 build 配置扩展 :stable 映像

您可以使用自己的自定义构建配置文件来扩展 :stable Docker 映像,以安装其他软件包或组件。例如,如果您想扩展 :stable Docker 映像以安装 python3-google-authpython3-requests 软件包并安装 pubsub emulator 组件,可以使用以下构建配置文件。

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'

通过构建自己的 Dockerfile 扩展 :stable 基础映像

您可以通过以下方式扩展 :stable Docker 映像:使用 :stable 映像作为基础映像创建自己的 Dockerfile,然后使用 docker build 命令构建 Docker 映像。

构建您自己的 :latest 映像

如需将 :stable 图片转换为 :latest 图片,请执行以下操作:

  1. 通过安装所需的组件和软件包,从 :stable 创建您自己的 Dockerfile:

    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. 构建 Dockerfile 以获取您自己的 :latest Docker 映像:

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

构建您自己的 :emulators 映像

如需将 :stable 图片转换为 :emulators 图片,请执行以下操作:

  1. 使用所需的组件和软件包创建 Dockerfile,如下所示:

    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. 运行以下命令构建 Dockerfile:

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

构建您自己的 :slim 映像

如需将 :stable 图片转换为 :slim 图片,请执行以下操作:

  1. 使用 :stable 作为基础映像创建 Dockerfile:

    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. 通过运行以下命令构建 Dockerfile:

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