Cloud Shell 的工作原理

启动 Cloud Shell 时,它会为您预配一个运行基于 Debian 的 Linux 操作系统的 Compute Engine 虚拟机。Cloud Shell 实例按每个用户、每个会话单独配置。当您的 Cloud Shell 会话处于活跃状态时,此实例将会持续存在;在处于非活跃状态一小时后,您的会话将终止,而其虚拟机将被舍弃。如需详细了解用量配额,请参阅限制指南。

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

永久性磁盘存储空间

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

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

授权

当您首次使用 Cloud Shell 进行 Google Cloud API 调用或使用需要凭据(例如 Google Cloud CLI)的命令行工具时,Cloud Shell 会提示您输入 'Authorize Cloud Shell' 对话框。点击授权可让该工具使用您的凭据进行调用。

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

预先配置的环境变量

启动 Cloud Shell 后,Cloud Console 中的活跃项目会传播到 Cloud Shell 内的 gcloud 配置,以供立即使用。GOOGLE_CLOUD_PROJECT 是应用默认凭据库支持用来定义项目 ID 的环境变量,它也被设置为指向 Cloud Console 中的活动项目。环境变量 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(包括适用于 Cloud Storage 的 gcloud CLI)
gsutil
文本编辑器 Emacs
Vim
Nano
构建和打包工具 Gradle
Dagger
Make
Maven
Bazel
npm
nvm
pip
Composer
源代码控制工具 Git
Mercurial
其他工具 Docker
iPython
MySQL 客户端
gRPC 编译器
TensorFlow
Terraform

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

语言支持

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

语言 版本
Java JRE/JDK 1.8 和 11
Go 1.13
Python 2.7.13
Node.js v10.14.2
Ruby 2.6.0
PHP 7.0.33
.NET Core SDK 2.0.0 和 2.1.502
核心运行时 2.0.0 和 2.1.6

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 会在连接后立即关闭。要解决此问题,请在网址结尾处附加cloudshellsafemode=true,以安全模式打开 Cloud Shell。这将重新启动您的 Cloud Shell 实例并以根用户身份登录,以便您修复文件中的任何问题。

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