Google Cloud CLI の Docker イメージのインストール

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 つあり、すべて gcloudgsutilbq コマンドライン ツールをインストールします。最小限の環境の場合は、: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: 安定版に似ていますが、curlpython3-crcmodapt-transport-httpslsb-releaseopenssh-clientgitmakegnupg などのサードパーティ パッケージが追加されています。このイメージは、最新の 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 リポジトリを使用して入手することもできます。

  1. 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
    
  2. 次のコマンドを実行して、インストールの内容を確認します。

    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)には、bqgsutil 以外のコンポーネントがインストールされていません。安定版イメージに追加のコンポーネントをインストールするには、次のいずれかを行います。

: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 curlgcc をインストールするには、次のコマンドを実行します。

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 コンポーネントを追加するには、次のようにします。

  1. 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
  1. 次のコマンドを実行してイメージをビルドします。
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 の最新の安定版リリースが使用されていることを確認するためにのみ対処されます。