Cloud Shell 的工作原理

Cloud Shell 会预配一个运行基于 Debian 的 Linux 操作系统的 Compute Engine 虚拟机,供您临时使用。此虚拟机由 Google Cloud 拥有和管理,因此不会出现在您的任何 Google Cloud 项目中。

Cloud Shell 实例按用户、每个会话进行预配。当您的 Cloud Shell 会话处于活跃状态时,此实例会持续存在;如果处于非活跃状态一小时后,您的会话将终止,且其虚拟机会被舍弃。如需详细了解用量配额,请参阅限制指南

凭借默认的 Cloud Shell 体验,您将分配有一个临时的、预配置的虚拟机,并且您使用的环境是在该虚拟机上运行的 Docker 容器。您还可以在虚拟机启动时自动自定义环境,以确保 Cloud Shell 实例包含您的首选工具。

永久性磁盘存储空间

Cloud Shell 免费预配 5 GB 的永久性磁盘存储空间,装载为您在虚拟机实例上的 $HOME 目录。此存储空间按用户分配,并且可以供多个项目使用。与实例本身不同,此存储空间不会因处于非活跃状态而超时。您存储在主目录中的所有文件(包括安装的软件、脚本以及 .bashrc.vimrc 等用户配置文件)在不同会话之间保持不变。您的 $HOME 目录只有您自己可以看到,其他用户无法访问。

如需更好地控制存储空间持久性,您可以使用 Cloud Workstations

Cloud Shell 还提供了暂存模式,即没有永久性磁盘存储空间的 Cloud Shell 体验。使用暂存模式,启动时间更短,但在会话中创建的所有文件在会话结束时都会丢失。

授权

当您首次通过 Cloud Shell 发出 Google Cloud API 调用或使用需要凭据的命令行工具(例如 Google Cloud CLI)时,Cloud Shell 会提示您授权。点击授权可让该工具使用您的凭据进行调用。

如需了解详情,请参阅使用 Cloud Shell 授权

预先配置的环境变量

Cloud Shell 启动后,Google Cloud 控制台中的活动项目将传播到 Cloud Shell 内的 gcloud 配置,供您立即使用。应用默认凭据库支持用于定义项目 ID 的环境变量 GOOGLE_CLOUD_PROJECT 也被设置为指向 Google Cloud 控制台中的活动项目。环境变量 WEB_HOST 指向 Cloud Shell 虚拟机的主机名,您可以使用该主机名向环境发出 HTTPS 请求。

可用区选择

Cloud Shell 分布在多个 Google Cloud 区域中。首次连接到 Cloud Shell 时,您将被自动分配到最近的可用区域。您无法选择自己的区域,如果 Cloud Shell 未选择最近的区域,则当 Cloud Shell 虚拟机未被使用时,Cloud Shell 会尝试将您的 Cloud Shell 虚拟机迁移到更近的区域中。

要查看当前区域,请从 Cloud Shell 会话中运行以下命令:

curl metadata/computeMetadata/v1/instance/zone

映像发布

Cloud Shell 容器映像每周更新一次,以使预封装的工具保持最新。这意味着 Cloud Shell 始终附带最新版本的 gcloud CLI、Docker 和其他实用程序。

根用户

在设置 Cloud Shell 会话时,您将获得一个常规的 Unix 用户账号,其用户名基于您的电子邮件地址。有了此访问权限,您就可以在分配的虚拟机上拥有完整的根用户权限,甚至可以根据需要运行 sudo 命令。

可用的工具

Cloud Shell 虚拟机实例预安装了以下工具:

类型 工具
Linux Shell 解释器 bash
sh
Linux 实用工具 标准 Debian 系统实用工具
gcloud CLI 和工具 App Engine SDK
Google Cloud CLI(包含 gcloud CLI)
适用于 Cloud Storage 的 gsutil
文本编辑器 Emacs
Vim
Nano
构建和打包工具 Gradle
Helm
Make
Maven
Bazel
npm
nvm
pip
Composer
源代码控制工具 Git
Mercurial
其他工具 Docker
iPython
MySQL 客户端
gRPC 编译器
TensorFlow
Terraform

您可以在虚拟机实例上安装其他软件包,但除非您将软件安装在 $HOME 目录中或创建自定义环境,否则在实例终止后安装的软件包将不会保留。

语言支持

Cloud Shell 虚拟机实例预安装了对以下语言的支持:

语言 版本
Java JRE/JDK 17.0.6 (OpenJDK)
Go 1.20.4
Python 3.9.2
Node.js v18.12.1
Ruby 2.7.8
PHP 7.4.33
.NET Core SDK 2.1、3.1、5.0 和 6.0
Core 运行时 2.1.30、3.1.32、5.0.17 和 6.0.16

Java 环境的默认版本为 11。要将当前 Cloud Shell 会话更改为使用 JRE 和 JDK 1.8 版,请在 Cloud Shell 命令提示符中输入以下内容:

sudo update-java-alternatives -s java-1.8.0-openjdk-amd64 && export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

要改回 11,请输入以下内容:

sudo update-java-alternatives -s java-1.11.0-openjdk-amd64 && export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/jre

安全模式

如果您的 .bashrc.tmux.conf 文件存在问题,Cloud Shell 会在连接后立即关闭。安全模式会重启您的 Cloud Shell 实例,并以 root 身份登录,以便您修复文件中的所有问题。

如需在安全模式下打开 Cloud Shell,请执行以下操作:

  • cloudshellsafemode=true 附加到网址。
  • 在 Cloud Shell 中,依次点击 安全模式重启

如需永久删除主目录中的所有文件并将 Cloud Shell 主目录恢复到清洁状态,您可以重置 Cloud Shell 虚拟机