Google Cloud CLI の Docker イメージを使用すると、Artifact Registry から Docker イメージとして特定のバージョンの gcloud CLI を pull し、正しく設定された隔離状態のコンテナで Google Cloud CLI コマンドをすばやく実行できます。
Google Cloud CLI の Docker イメージは、Debian または Alpine のイメージ上にインストールされる gcloud CLI です。Google Cloud CLI の Docker イメージを使用すると、ローカルマシンに gcloud を手動でインストールしなくても、gcloud とそのバンドル コンポーネントを使用できます。
Docker イメージ オプション
Google Cloud CLI の Docker イメージは 6 つあり、すべて gcloud
、gsutil
、bq
コマンドライン ツールをインストールします。最小限の環境の場合は、:stable
イメージをインストールすることをおすすめします。安定版イメージを独自のデプロイのベースイメージとして使用することもできます。これにより、イメージに必要なコンポーネントとパッケージのみを柔軟にインストールできます。
:stable
、:VERSION-stable
:gsutil
コンポーネントとbq
コンポーネントを含む gcloud インストールを提供します。このイメージは、最新の Google 提供の Debian 12 ベースイメージ上に構築されています。このイメージは、linux/amd
プラットフォームとlinux/arm
プラットフォームの両方をサポートしています。特定の gcloud バージョンをインストールするには、:VERSION-stable
タグを使用します。
Alpine ベースのイメージを使用する場合は、次のイメージをインストールできます。
:alpine
、:VERSION-alpine
: 安定版に似ていますが、最新の Alpine 3.19 ベースイメージ上に構築されています。このイメージは、linux/amd
プラットフォームとlinux/arm
プラットフォームの両方をサポートしています。特定の gcloud バージョンをインストールするには、:VERSION-alpine
タグを使用します。
追加のコンポーネントまたはパッケージがプリインストールされたイメージが必要な場合は、次のいずれかのオプションをインストールします。
:emulators
、:VERSION-emulators
: 安定版にすべてのエミュレータ コンポーネントが追加されています。このイメージは、最新の Google 提供の Debian 12 ベースイメージ上にビルドされ、コンポーネント マネージャーを使用してコンポーネントをインストールします。このイメージは、linux/amd
プラットフォームとlinux/arm
プラットフォームの両方をサポートしています。特定の gcloud バージョンをインストールするには、:VERSION-emulators
タグを使用します。:latest
、:VERSION
: stable と同様ですが、追加のコンポーネント(イメージにインストールされているコンポーネントのリストは下記に記載されています)がプリインストールされています。このイメージは、最新の Google 提供の Debian 12 ベースイメージ上に構築され、deb パッケージを使用してコンポーネントをインストールします。特定の gcloud バージョンをインストールするには、:VERSION
タグを使用します。:slim
、:VERSION-slim
: 安定版に似ていますが、curl
、python3-crcmod
、apt-transport-https
、lsb-release
、openssh-client
、git
、make
、gnupg
などのサードパーティ パッケージが追加されています。このイメージは、最新の Google 提供の Debian 12 ベースイメージ上に構築されています。このイメージは、linux/amd
プラットフォームとlinux/arm
プラットフォームの両方をサポートしています。特定の gcloud バージョンをインストールするには、:VERSION-slim
タグを使用します。:debian_component_based
、:VERSION-debian_component_based
: 安定版に似ていますが、追加のコンポーネント(イメージにインストールされているコンポーネントのリストは下記に記載されています)がプリインストールされています。このイメージは、最新の Google 提供の Debian 12 ベースイメージ上に構築され、コンポーネント マネージャーを使用してコンポーネントをインストールします。このイメージは、linux/amd
プラットフォームとlinux/arm
プラットフォームの両方をサポートしています。特定の gcloud バージョンをインストールするには、:VERSION-debian_component_based
タグを使用します。
本番環境で特定のバージョンを使用する
特定の gcloud バージョンに関連付けられていないタグを使用すると、環境で次の破壊的変更が発生する可能性があります。
- Google Cloud SDK のバージョン アップデートにより、ツールの動作が変更される可能性があります。
- インストール済みコンポーネントのリストの更新。
破壊的変更を回避するため、本番環境では次のいずれかを使用することをおすすめします。
- バージョン付きタグ(
:496.0.0-stable
など) - 特定の画像ハッシュ(
gcr.io/google.com/cloudsdktool/google-cloud-cli@sha256:9c0efc06918d5405b13bfe4bb5ce1d98ea4695cc703446e9e0aa0ee8800622df
など) - 独自のリポジトリでイメージをホストする
また、最新の gcloud バージョンを取得するために、イメージを定期的に更新する必要があります。
Google Cloud CLI の最新バージョンと Google Cloud CLI の以前のすべてのバージョンを確認します。
各タグにインストールされているコンポーネント
コンポーネント | :stable | :alpine | :emulators | :latest | :slim | :debian_component_based |
---|---|---|---|---|---|---|
App Engine Go 拡張機能 | x | x | ||||
Appctl | x | |||||
BigQuery コマンドライン ツール | x | x | x | x | x | x |
バンドルされた Python 3.9 | x | x | x | x | x | x |
Bigtable コマンドライン ツール | x | x | ||||
Bigtable Emulator | x | x | x | |||
Cloud Datastore エミュレータ | x | x | x | |||
Cloud Firestore エミュレータ | x | x | ||||
Cloud Pub/Sub Emulator | x | x | x | |||
Spanner Emulator | x | x | ||||
Cloud Storage コマンドライン ツール | x | x | x | x | x | x |
Google Cloud CLI コアライブラリ | x | x | x | x | x | x |
Google Cloud CRC32C ハッシュツール | x | x | x | x | x | x |
Kustomize | x | |||||
Minikube | x | |||||
Nomos CLI | x | |||||
On-Demand Scanning API 抽出ヘルパー | x | x | ||||
Skaffold | x | |||||
anthos-auth | x | |||||
gcloud Alpha Commands | x | x | x | x | ||
gcloud Beta Commands | x | x | x | x | ||
gcloud App Java Extensions | x | |||||
gcloud App Python Extensions | x | |||||
gcloud app Python 拡張機能(追加ライブラリ) | x | x | ||||
gke-gcloud-auth-plugin | x | x | ||||
kpt | x | x | ||||
kubectl | x | x |
Docker イメージのインストール
Docker イメージは、リポジトリ名 gcr.io/google.com/cloudsdktool/google-cloud-cli
で、Artifact Registry にホストされます。イメージは、us.gcr.io
リポジトリ、eu.gcr.io
リポジトリ、asia.gcr.io
リポジトリを使用して入手することもできます。
stable の Google Cloud CLI リリースのイメージ
gcr.io/google.com/cloudsdktool/google-cloud-cli:stable
を使用するには、次のコマンドを実行して Artifact Registry から pull してください。docker pull gcr.io/google.com/cloudsdktool/google-cloud-cli:489.0.0-stable
イメージ ハッシュを使用して、リポジトリから特定の Docker イメージを pull することもできます。イメージ ハッシュを使用して、前の例(
:489.0.0-stable
)と同じイメージを pull するには、次のコマンドを実行します。docker pull gcr.io/google.com/cloudsdktool/google-cloud-cli@sha256:589a0db8919614ef919dfd6ed89127211b4b6bf5ee6a2e2ce92abf33cbfe49d8
次のコマンドを実行して、インストールの内容を確認します。
docker run --rm gcr.io/google.com/cloudsdktool/google-cloud-cli:489.0.0-stable gcloud version
フローティング
:stable
タグ(常に最新リリースを参照)を使用した場合は、次のコマンドを実行してインストールを確認します。docker run --rm gcr.io/google.com/cloudsdktool/google-cloud-cli:stable gcloud version
Google Cloud CLI の Docker イメージで認証する
次のいずれかのコマンドを実行して、Google Cloud CLI の Docker イメージで認証します。
gcloud auth login
を実行して、ユーザー認証情報で gcloud を認証します。docker run -ti --name gcloud-config gcr.io/google.com/cloudsdktool/google-cloud-cli:stable gcloud auth login
Google Cloud APIs を使用するアプリケーションを認証する必要がある場合は、
--update-adc
オプションを渡します。docker run -ti --name gcloud-config gcr.io/google.com/cloudsdktool/google-cloud-cli:stable gcloud auth login --update-adc
コンテナを開くたびに選択されるデフォルト プロジェクトを設定するには、次のコマンドを実行します。
docker run -ti --name gcloud-config gcr.io/google.com/cloudsdktool/google-cloud-cli:stable /bin/bash -c 'gcloud auth login && gcloud config set project your-project'
認証が完了すると、認証情報は
gcloud-config container
のボリュームに保存されます。確認するには、
--volumes-from
を指定してコンテナを実行し、認証情報を使用してコンピューティング インスタンスを一覧表示します。docker run --rm --volumes-from gcloud-config gcr.io/google.com/cloudsdktool/google-cloud-cli:stable gcloud compute instances list --project your-project
サービス アカウントを使用して認証する場合は、
auth/credential_file_override
プロパティを使用して、マウントされたサービス アカウントへのパスを設定します。次に、CLOUDSDK_CONFIG
環境変数を使用してマウントされたサービス アカウントを読み取るように構成を更新します。次の例では、
mycloud
構成にauth/credential_file_override
がすでに設定されています。この構成は、コンテナ内に存在する証明書ファイルを別のボリューム マウントとして参照します。$ docker run -ti -e CLOUDSDK_CONFIG=/config/mygcloud \ -v `pwd`/mygcloud:/config/mygcloud \ -v `pwd`:/certs gcr.io/google.com/cloudsdktool/google-cloud-cli:stable /bin/bash bash-4.4# gcloud config list [auth] credential_file_override = /certs/svc_account.json bash-4.4# head -10 /certs/svc_account.json { "type": "service_account", "project_id": "project_id1", .... bash-4.4# gcloud projects list PROJECT_ID NAME PROJECT_NUMBER project_id1 GCPAppID 1071284184432
環境変数の設定の詳細については、以下をご覧ください。
追加コンポーネントのインストール
Google Cloud CLI の Docker イメージに追加のコンポーネントをインストールできます。追加コンポーネントをインストールする方法は、基盤となるベースイメージのタイプによって異なります。
Debian ベースのイメージ
デフォルトでは、安定版イメージ(:stable
と :VERSION-stable
)には、bq
と gsutil
以外のコンポーネントがインストールされていません。安定版イメージに追加のコンポーネントをインストールするには、次のいずれかを行います。
:stable
イメージ Dockerfile を使用して独自のイメージをビルドする:apt-get
(Docker エンジンなど)から直接使用できないパッケージをインストールします。- 実行時に追加のパッケージまたはコンポーネントをインストールする: イメージをホストせずにカスタマイズします。
:stable
イメージ Dockerfile を使用して独自のイメージをビルドする
:stable
から追加のコンポーネントを使用して独自のイメージをビルドするには、cloud-sdk-docker GitHub ディレクトリをクローンし、docker build
コマンドを使用して、INSTALL_COMPONENTS
引数を指定して Dockerfile から :stable
Docker イメージをビルドします。たとえば、datastore-emulator
コンポーネントを追加するには、次のようにします。
# clone the GitHub docker directory
$ git clone https://github.com/GoogleCloudPlatform/cloud-sdk-docker.git
$ docker build --build-arg CLOUD_SDK_VERSION=<release_version> \
--build-arg INSTALL_COMPONENTS="google-cloud-cli-datastore-emulator=<release_version>-0" \
-t my-cloud-sdk-docker:stable .
ランタイムでの追加パッケージまたはコンポーネントのインストール
stable
Docker イメージを pull した場合は、ランタイム中に次の追加コンポーネントをインストールできます。
- gcloud components を実行します。
COMPONENTS
- apt-packages は
APT_PACKAGES
環境変数を使用して指定します。
たとえば、cbt
コンポーネントと kpt
コンポーネントを実行時にインストールするには、次のコマンドを実行します。
docker run -e COMPONENTS='google-cloud-cli-cbt google-cloud-cli-kpt' \
gcr.io/google.com/cloudsdktool/google-cloud-cli:stable gcloud version
Docker イメージの実行中に apt-packages curl
と gcc
をインストールするには、次のコマンドを実行します。
docker run -e APT_PACKAGES='curl gcc' \
gcr.io/google.com/cloudsdktool/google-cloud-cli:stable gcloud version
Alpine ベースのイメージ
Alpine ベースのイメージに追加のコンポーネントをインストールするには、cloud-sdk
イメージをベースイメージとして使用する Dockerfile を作成します。
たとえば、kubectl
コンポーネントと app-engine-java
コンポーネントを追加するには、次のようにします。
- Dockerfile を次のように作成します。
FROM gcr.io/google.com/cloudsdktool/google-cloud-cli:alpine
RUN apk --update add gcompat openjdk8-jre
RUN gcloud components install app-engine-java kubectl
- 次のコマンドを実行してイメージをビルドします。
docker build -t my-cloud-sdk-docker:alpine .
Alpine ベースのイメージの場合は、追加コンポーネントの依存関係を手動でインストールする必要があります。
:stable
イメージへの移行
:latest
、:slim
、:emulators
、:alpine
、:debian_component_based
の Docker イメージを使用している場合は、イメージサイズを小さくし、セキュリティ修正を改善するために、Debian ベースの :stable
イメージに移行することをおすすめします。:stable
イメージに移行する手順については、:stable
イメージへの移行をご覧ください。
画像のサポートを受ける
Artifact Registry でホストされているイメージは、Google Cloud CLI の完全な機能を備えたインストールを提供します。Docker イメージに関連するバグや問題が見つかった場合は、サポート チケットを作成できます。
追加のコンポーネント、パッケージ、ツールを含むイメージが必要な場合は、Google Cloud CLI の Docker イメージの上に独自のイメージレイヤを作成できます。
トラブルシューティング
Docker イメージの pull 中に failed to fetch <image-tag>
エラーが表示された場合、どうすればよいですか?
Google Cloud CLI の Docker イメージの pull 中に failed to fetch <image-tag>
エラーが発生した場合は、非推奨で削除されたイメージタグを取得しようとしている可能性があります。Docker イメージ オプションで使用可能な Docker イメージ オプションを確認し、サポートされているタグのいずれかに移行します。
現在のワークフローをサポートするために :stable
Docker イメージを直接拡張できないユースケースにはどのようなものがありますか?
次の表に、ワークフローに合うように :stable
Docker イメージを直接拡張できないユースケースと、その問題を解決するオプションを示します。
ユースケース | 修復オプション |
---|---|
app-engine コンポーネント(:latest または :debian_component_based Docker イメージで使用)は Debian 12 と互換性がありません。 |
互換性のある Debian(Debian 11)イメージから独自のイメージをビルドして、app-engine コンポーネントをインストールします。 |
docker や docker-buildx などのサードパーティ パッケージは :stable イメージに含まれていません。 |
これらのサードパーティ パッケージが必要な場合は、独自のイメージをビルドするか、これらのパッケージを :stable Docker イメージに手動でインストールします。 |
スキャナで Docker イメージに脆弱性が見つかった場合はどうすればよいですか?
Google Cloud CLI の Docker イメージは Artifact Registry でホストされます。イメージは毎日スキャンされ、新しい gcloud リリースの前に共通脆弱性識別子(CVE)が軽減されます。ただし、スキャナで Google Cloud CLI の Docker イメージの未解決の脆弱性が検出された場合は、次の情報を含めてバグを報告できます。
- 脆弱性のタイプ。
- 画像内の正確な位置。
ベース OS イメージ内の脆弱性は、Google Cloud CLI の Docker イメージで Debian または Alpine Linux の最新の安定版リリースが使用されていることを確認するためにのみ対処されます。