特性

Google Cloud Shell 是 Google Cloud Platform 的一个互动式 Shell 环境。您可以使用它轻松管理项目和资源,而无需在系统上安装 Google Cloud SDK 和其他工具。借助 Cloud Shell,您可以根据需要随时使用 Cloud SDK gcloud 命令行工具及其他实用工具。

Cloud Shell 会话

Cloud Shell 具有以下特性:

虚拟机实例

当启动 Cloud Shell 时,它会为您预配一个运行基于 Debian 的 Linux 操作系统的 g1-small Google Compute Engine 虚拟机。Cloud Shell 实例按每个用户、每个会话单独预配。当您的 Cloud Shell 会话处于活跃状态时,此实例会持续存在;当会话处于非活跃状态一小时后,此实例会终止。

命令行访问

利用 Cloud Shell,您可以从一个在 Google Cloud Platform Console 中打开的终端窗口中通过命令行访问虚拟机实例。您可以开启多个连接到同一实例的 Shell 连接,实例的状态会在这些会话间保持一致。除了在命令行中使用 Cloud SDK gcloud 命令行工具和其他实用工具外,您还可以使用 cloudshell 命令来启动教程、打开代码编辑器以及下载文件。请运行 cloudshell help 了解详情。

代码编辑器

运行 Theia 的 Cloud Shell 代码编辑器现已推出测试版。

您可以使用代码编辑器浏览文件目录以及查看和编辑文件,同时继续使用 Cloud Shell。默认情况下,每个 Cloud Shell 实例都可以使用代码编辑器。

您可以通过点击铅笔图标从工具栏访问代码编辑器。

Cloud Shell 和 Editor 会话

或者,您可以在 Cloud Console 中运行 cloudshell 命令来在代码编辑器中打开现有文件(例如上述环境中的 README-cloudshell.txt),命令如下所示:

cloudshell edit README-cloudshell.txt

永久性磁盘存储空间

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

可用的工具

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

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

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

语言支持

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

语言 版本
Java JRE/JDK 1.8 和 1.11
Go 1.11
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
Core 运行时 2.0.0 和 2.1.6

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

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

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

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

您可以忽略任何关于无法更改某些二进制文件版本的错误消息。在 Cloud Shell 虚拟机实例终止之前,对版本的更改会持续有效。如果您想永久切换到 Java 1.11,请将上述第一条命令添加到您的 .bashrc 文件中。

网页预览

Cloud Shell 提供了网页预览功能,您可以在虚拟机实例上运行网页应用并通过 GCP Console 进行预览。网页应用必须在允许的 2000 到 65000 端口范围内侦听 HTTP 请求。这些端口仅供安全的 Cloud Shell 代理服务访问,而该服务会只允许您的用户帐号通过 HTTPS 进行访问。

要连接到实例上运行的网页应用,请点击 GCP Console 中 Cloud Shell 终端窗口上方的网页预览按钮 网页预览按钮。然后从显示的菜单中选择端口号。这样将在新的浏览器窗口中打开 Cloud Shell 代理服务的预览网址。

增强模式

增强模式会暂时提升 Cloud Shell 虚拟机的能力,使其从默认的 g1-small 机器类型提升为 n1-standard-1 虚拟机实例。如果您想继续使用 Cloud Shell,但在相对较短的时间内需要更多的 CPU 或内存资源,这种模式将会非常方便。

要激活增强模式,请在“更多”菜单(Cloud Shell 右上角的三点状图标)下找到“启用增强模式”选项。激活后,所有会话的性能在未来 24 小时内将得到增强。启用增强模式将重新启动您的 Cloud Shell,并立即终止您的会话。系统随后将为您预配新的虚拟机,这可能需要几分钟的时间。您的主目录中的数据将会保留,但所有运行中的进程将会丢失。

使用增强模式需遵循常规使用限制。此功能目前处于实验阶段,未来可能还会有其他限制。

授权

Cloud Shell 提供内置授权,方便您访问 Google Cloud Platform 上托管的项目和资源。您无需执行额外的授权步骤即可使用 Cloud SDK gcloud 命令行工具访问平台资源。

tmux 支持

Cloud Shell 默认使用 tmux,这可以提高跨浏览器标签页的会话的持久性。例如,如果您在标签页中刷新 GCP Console 或从其他机器连接到您的 Cloud Shell,会话状态不会丢失。

Cloud Shell 支持默认的 tmux 组合键。例如,如果先按 Ctrl + b 然后按 %,则 tmux 会将当前会话窗口分成左窗格和右窗格,这对调试非常有用。

要在 Cloud Shell 中停用 tmux,请点击设置按钮 设置按钮,并选择 Tmux 设置,然后取消选择启用 Tmux 集成选项。

终端使用情况统计信息

Cloud Shell 会针对在 Cloud Shell 终端内部运行的命令,收集经过匿名处理的使用情况统计信息。我们只收集 Cloud Shell 中预装的命令的使用情况统计信息。我们不会收集任何涉及个人身份信息的指标,例如传递给这些命令的参数。这些指标将无法回溯到您的帐号。要关闭数据收集,请在 Cloud Shell 设置中选择使用情况统计信息(使用三点状菜单图标)。

注意:该设置与 gcloud 使用情况统计信息是分开的,后者在 Cloud Shell 中默认启用。

安全模式

如果您的 .bashrc.tmux.conf 文件出现问题,Cloud Shell 将在连接后立即关闭。要解决此问题,请在网址结尾处附加 cloudshellsafemode=true,以安全模式打开 Cloud Shell。这将重新启动您的 Cloud Shell 并以根用户身份登录,以便您修复文件中的任何问题。

键盘

Cloud Shell 允许您更改发送至终端的按键。在终端设置菜单下,选择终端偏好设置 > 键盘以查看以下选项:

  • Alt 键等同于 Meta 键 - 设置是将 Alt 键作为 Meta 键还是仅作为 Alt 键。
  • Alt Gr 模式 - 选择 AltGr 检测启发法

自定义 Cloud Shell 环境

您的 Cloud Shell 环境是一个 Docker 容器,并且具有自定义环境功能(目前为 Alpha 版),您现在可以通过修改 Dockerfile 来修改此容器。这使得您可以将自定义工具安装到 Cloud Shell 环境中,该环境的状态可在会话之间持续。您可以在此处查看环境配置页面.

点击配置屏幕上的“创建自定义映像”即可启动教程,该教程将向您逐步介绍如何创建自定义 Docker 映像,以将其用作您的 Cloud Shell 环境。然后,您可以修改 Cloud Shell 环境,以便引用这一刚刚创建的映像。

本教程会自动创建以下四项资源:

  • 包含 Dockerfile 的 Cloud Source Repositories 代码库。
  • 两个 Cloud Build 构建触发器,一个在 Cloud Source Repositories 代码库有任何更新时触发,另一个在 Cloud Shell 基础映像发生变化时触发。
  • 托管在 Google Container Registry 中的已构建 Docker 映像。

如果您希望在学完本教程后执行清理工作,则需要从 Cloud Source Repositories、Cloud Build 和 Container Registry 中删除这些资源。

自定义环境限制

  • 自定义映像必须基于默认的 Cloud Shell 映像:gcr.io/cloudshell-images/cloudshell
  • Dockerfile 中由 ENV 指定的变量不会传播到 SSH 会话。如需将这些变量传播到 SSH 会话,请在 /etc/ environment 文件中设置这些变量:RUN echo "$MY_VAR=$DESIRED_VALUE" >> /etc/environment
  • 您无法覆盖 Dockerfile ENTRYPOINT。
  • 将您希望在会话开始时运行的脚本放置在 /google/devshell/bashrc.google.d/ 下。对于要在会话结束时运行的脚本,您可以将其放置在 /google/devshell/bash_exit.google.d/ 下。

后续步骤

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Cloud Shell