通过 Google Cloud CLI Docker 映像,您可以从 Artifact Registry 将特定版本的 gcloud CLI 作为 Docker 映像拉取,并在正确配置的隔离容器中快速执行 Google Cloud CLI 命令。
Google Cloud CLI Docker 映像是安装在 运行在 Debian 或 Alpine 映像之上。借助 Google Cloud CLI Docker 映像,您无需在本地机器上手动安装 gcloud,即可使用 gcloud 及其捆绑的组件。
Docker 映像选项
Google Cloud CLI 有 6 个 Docker 映像。我们建议您安装以下稳定映像:
:stable
、:VERSION-stable
:具有 标准 gcloud 安装。
如果您想使用基于 Alpine 的映像,可以安装以下映像:
:alpine
,:VERSION-alpine
:未安装任何其他组件的较小(基于 Alpine)映像。此映像支持 linux/arm。
如果您希望映像预安装其他软件包或 gcloud 组件,可以安装以下任一选项:
:emulators
、:VERSION-emulators
:预安装了模拟器组件的较小(基于 Debian)映像。:latest
、:VERSION
:包含其他组件的大型(基于 Debian)映像 。:slim
、:VERSION-slim
:不含组件的较小(基于 Debian)映像 。:debian_component_based
、:VERSION-debian_component_based
:L(基于 Debian) 且已预安装其他组件。与使用:latest
使用 deb 软件包,此映像使用组件管理器安装组件。 此映像支持 linux/arm。
在每个代码中安装的组件
组件 | :stable | :alpine | :emulators | :latest | :精简 | :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 模拟器 | x | x | x | |||
Cloud Datastore Emulator | 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 Core 库 | 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 版命令 | x | x | x | x | ||
gcloud Beta Commands | x | x | x | x | ||
gcloud app Java 扩展程序 | x | |||||
gcloud app Python 扩展程序 | x | |||||
gcloud app Python 扩展程序(额外库) | x | x | ||||
gke-gcloud-auth-plugin | x | x | ||||
kpt | x | x | ||||
kubectl | x | x |
在生产环境中使用特定版本
Google Cloud CLI Docker 映像 :<tag>
和 :<VERSION-tag>
标记每天都会重新构建,以便立即纳入任何基础映像漏洞修复程序。如果您使用的标记未与特定版本相关联,您的环境可能会出现以下可能的破坏性更改:
- Google Cloud SDK 版本更新,这可能会改变该工具的行为。
- 更新了已安装组件列表。
为避免可能破坏的更改,建议您的生产环境使用以下任一方法:
- 注明了日期且采用版本控制的标记,例如
:496.0.0-stable-20241015
- 特定映像哈希,例如:
gcr.io/google.com/cloudsdktool/google-cloud-cli@sha256:9c0efc06918d5405b13bfe4bb5ce1d98ea4695cc703446e9e0aa0ee8800622df
您还应定期更新映像,以获取最新的 gcloud 版本。
查看最新版 Google Cloud CLI 和所有之前的 Google Cloud CLI 版本。
安装 Docker 映像
Docker 映像托管在 Artifact Registry 上,并具有以下代码库名称:gcr.io/google.com/cloudsdktool/google-cloud-cli
。这些图片还可用于
us.gcr.io
、eu.gcr.io
和 asia.gcr.io
代码库。
如需使用稳定版 Google Cloud CLI 版本的映像,请执行以下操作:
gcr.io/google.com/cloudsdktool/google-cloud-cli:stable
, 从 Artifact Registry 中拉取 方法是运行以下命令:docker pull gcr.io/google.com/cloudsdktool/google-cloud-cli:489.0.0-stable
运行以下命令来验证安装:
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 进行身份验证,方法如下: 运行
gcloud auth login
:docker run -ti --name gcloud-config gcr.io/google.com/cloudsdktool/google-cloud-cli:stable gcloud auth login
如果您需要对使用 Google Cloud API 的应用进行身份验证, 传递
--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 Engine)直接获取的软件包。 - 在运行时安装其他软件包或组件: 无需托管即可自定义图片。
使用 :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 映像,则可以在运行时安装以下其他组件:
- 使用
COMPONENTS
环境管理 gcloud 组件 变量。 - 使用
APT_PACKAGES
环境变量安装 apt-package。
例如,如果您想在运行时安装 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 软件包 curl
和 gcc
,请执行以下命令:
docker run -e APT_PACKAGES='curl gcc' \
gcr.io/google.com/cloudsdktool/google-cloud-cli:stable gcloud version
基于 Alpine 的映像
如需为基于 Alpine 的映像安装其他组件,请创建一个 Dockerfile
使用 cloud-sdk
映像作为基础映像的服务。
例如,如需添加 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 的全功能安装。如果你发现错误或 来快速构建容器 支持服务工单。
如果您需要包含其他组件、软件包或工具的映像,可以 基于图片的特征,创建您自己的图像层, Google Cloud CLI Docker 映像。
问题排查
如果看到 failed to fetch <image-tag>
错误应该怎么做
会发生什么呢?
如果您在尝试拉取 Google Cloud CLI Docker 映像时收到 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 组件。 |
:stable 映像不包含 docker 或 docker-buildx 等第三方软件包 |
如果您需要这些第三方软件包,请自行构建映像,或在 :stable Docker 映像中手动安装这些软件包。 |
如果扫描程序在 Docker 映像中发现了漏洞,您应该怎么做?
Google Cloud CLI Docker 映像托管在 Artifact Registry 中。在每次发布新的 gcloud 版本之前,我们都会每天扫描映像,并缓解常见漏洞和披露 (CVE)。但是,如果您的扫描程序 在以下环境中检测到漏洞: Google Cloud CLI Docker 映像未解析,您可以 报告 bug 包含以下信息:
- 漏洞的类型。
- 图片中的确切位置。
修复基本操作系统映像中的漏洞是为了确保 Google Cloud CLI Docker 映像使用的是最新稳定版 Debian 或 Alpine Linux。