: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 イメージとして使用できます。
: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
ビルド構成で :stable イメージを拡張する
独自のカスタム ビルド構成ファイルを使用して :stable Docker イメージを拡張し、追加のパッケージやコンポーネントをインストールできます。たとえば、:stable Docker イメージを拡張して python3-google-auth パッケージと python3-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 イメージに変換するには、次の操作を行います。
必要なコンポーネントとパッケージをインストールして、
: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 \ kubectlDockerfile をビルドして、独自の
:latestDocker イメージを取得します。$ docker build -t my-cloud-sdk-docker:latest .
独自の :emulators イメージをビルドする
:stable イメージを :emulators イメージに変換するには、次の操作を行います。
次のように、必要なコンポーネントとパッケージを含む 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次のコマンドを実行して Dockerfile をビルドします。
$ docker build -t my-cloud-sdk-docker:emulators .
独自の :slim イメージをビルドする
:stable イメージを :slim イメージに変換するには、次の操作を行います。
: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次のコマンドを実行して Dockerfile をビルドします。
$ docker build -t my-cloud-sdk-docker:slim .