:stable 이미지로 마이그레이션

:latest, :alpine, :emulators, :latest, :slim, :debian_component_based Docker 이미지를 사용하는 경우 이미지 크기를 줄이고 보안 수정사항을 개선하려면 Debian 기반 :stable 이미지로 마이그레이션하는 것이 좋습니다. :stable 이미지를 사용하도록 전환하려면 사용 중인 Debian 기반 이미지로 :stable Docker 이미지를 확장하면 됩니다.

python2 또는 이전 JDK와 같이 이전의 호환되지 않는 종속 항목을 설치하는 경우와 같이 :stable 이미지를 확장하는 것이 항상 가능한 것은 아닙니다. 이 경우 자체 Dockerfile을 빌드해야 할 수 있습니다.

:stable Docker 이미지 확장

:stable Docker 이미지를 기본 이미지로 사용하고 추가 구성요소와 apt 패키지를 설치하여 다른 Debian 기반 Docker 이미지(예: :latest, :emulators, :slim)로 확장할 수 있습니다. :stable Docker 이미지를 확장하려면 다음 중 하나를 실행하면 됩니다.

런타임에 맞춤설정하여 :stable 기본 이미지 확장

:stable Docker 이미지를 런타임에 맞춤설정하여 :latest, :emulators 또는 :slim 이미지로 사용할 수 있습니다.

다음 docker run 명령어를 실행하여 런타임에 :stable Docker 이미지를 :latest Docker 이미지로 확장합니다.

# 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

다음 명령어를 실행하여 런타임에 :stable Docker 이미지를 :emulators Docker 이미지로 확장할 수 있습니다.

# 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

다음 docker run 명령어를 실행하여 :stable Docker 이미지를 :slim Docker 이미지로 확장할 수 있습니다.

# 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

자체 Dockerfile을 빌드하여 :stable 기본 이미지 확장

:stable 이미지를 기본 이미지로 사용하여 자체 Dockerfile을 만든 다음 docker build 명령어로 Docker 이미지를 빌드하여 :stable Docker 이미지를 확장할 수 있습니다.

: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 .
    

: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 .
    

: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 .