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.20 ベースイメージ上に構築されています。このイメージはlinux/amdプラットフォームとlinux/armプラットフォームの両方をサポートしています。特定の gcloud バージョンをインストールするには、:VERSION-alpineタグを使用します。
追加のコンポーネントまたはパッケージがプリインストールされたイメージが必要な場合は、次のいずれかのオプションをインストールできます。
:emulators、:VERSION-emulators: すべてのエミュレータ コンポーネントが追加されている点を除き、stable と同様です。このイメージは、最新の Google 提供の Debian 12 ベースイメージに基づいてビルドされ、コンポーネント マネージャーを使用してコンポーネントをインストールします。このイメージは、linux/amdプラットフォームとlinux/armプラットフォームの両方をサポートしています。特定の gcloud バージョンをインストールするには、:VERSION-emulatorsタグを使用します。:latest、:VERSION: 安定版と同様ですが、追加コンポーネント(イメージにインストールされているコンポーネントのリストは下記を参照)がプリインストールされています。このイメージは、最新の Google 提供の Debian 12 ベースイメージに基づいて構築され、deb パッケージを使用してコンポーネントをインストールします。このイメージはlinux/amdプラットフォームとlinux/armプラットフォームの両方をサポートしています。特定の gcloud バージョンをインストールするには、:VERSIONタグを使用します。:slim、:VERSION-slim: stable と同様ですが、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 | 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 loginGoogle 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 している場合は、実行時に次の追加コンポーネントをインストールできます。
COMPONENTS環境変数を使用して gcloud コンポーネントを更新します。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 イメージを直接拡張できないユースケースと、解決策を示します。
| ユースケース | 修復オプション |
|---|---|
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 の最新の安定版リリースが使用されていることを確認するためにのみ対処されます。
Artifact Registry リポジトリにタグなしイメージがあるのはなぜですか?
タグ :stable、:alpine、:emulators、:debian_component_based を含む Google Cloud CLI Docker イメージは、arm64 プラットフォームと amd64 プラットフォームの両方をサポートしています。イメージは、アーキテクチャ固有のイメージを 1 つのマニフェストに結合するマルチアーキテクチャ ビルドプロセスでビルドされます。マニフェストには、プラットフォーム固有の構成証明イメージも含まれます。マルチ アーキテクチャ ビルドプロセスでは、最終的なマニフェスト イメージにのみタグが追加されます。個々のアーキテクチャ固有のイメージや構成証明イメージにはタグが付けられません。その結果、Artifact Registry リポジトリにタグなしイメージが表示されることがあります。これらの画像は使用を想定したものではないため、無視しても問題ありません。
gcloud Docker イメージから削除されたサードパーティ パッケージに関する情報はどこで入手できますか?
削除されたすべてのサードパーティ パッケージに関する情報は、GitHub のお知らせで確認できます。