Google Cloud 维护以下旨在与 Cloud Workstations 搭配使用的基础映像。
预配置的基础映像列表
这些映像可以直接用于工作站配置,也可以在创建使用 Docker 的 FROM 命令的自定义容器映像时用作基础映像。
| Image | 说明 |
|---|---|
| us-central1-docker.pkg.dev/cloud-workstations-images/predefined/code-oss:latest | Cloud Workstations 基本编辑器,即基于 Code-OSS 的 Cloud Workstations 版 Code OSS。(默认) |
| us-central1-docker.pkg.dev/cloud-workstations-images/predefined/base:latest | 未安装 IDE 的基础映像。 |
| us-central1-docker.pkg.dev/cloud-workstations-images/predefined/clion:latest | CLion IDE。只能通过 JetBrains Gateway 访问。 如需了解安装和入门信息,请参阅使用本地 JetBrains IDE 开发代码。 |
| us-central1-docker.pkg.dev/cloud-workstations-images/predefined/goland:latest | GoLand IDE。只能通过 JetBrains Gateway 访问。 如需了解安装和入门信息,请参阅使用本地 JetBrains IDE 开发代码。 |
| us-central1-docker.pkg.dev/cloud-workstations-images/predefined/intellij-ultimate:latest | IntelliJ IDEA Ultimate IDE。只能通过 JetBrains Gateway 访问。 如需了解安装和入门信息,请参阅使用本地 JetBrains IDE 开发代码。 |
| us-central1-docker.pkg.dev/cloud-workstations-images/predefined/phpstorm:latest | PhpStorm IDE。只能通过 JetBrains Gateway 访问。 如需了解安装和入门信息,请参阅使用本地 JetBrains IDE 开发代码。 |
| us-central1-docker.pkg.dev/cloud-workstations-images/predefined/pycharm:latest | PyCharm Professional IDE。只能通过 JetBrains Gateway 访问。 如需了解安装和入门信息,请参阅使用本地 JetBrains IDE 开发代码。 |
| us-central1-docker.pkg.dev/cloud-workstations-images/predefined/rider:latest | Rider IDE。只能通过 JetBrains Gateway 访问。 如需了解安装和入门信息,请参阅使用本地 JetBrains IDE 开发代码。 |
| us-central1-docker.pkg.dev/cloud-workstations-images/predefined/rubymine:latest | RubyMine IDE。只能通过 JetBrains Gateway 访问。 如需了解安装和入门信息,请参阅使用本地 JetBrains IDE 开发代码。 |
| us-central1-docker.pkg.dev/cloud-workstations-images/predefined/webstorm:latest | WebStorm IDE。只能通过 JetBrains Gateway 访问。 如需了解安装和入门信息,请参阅使用本地 JetBrains IDE 开发代码。 |
第三方基础映像列表
| 第三方图片 | 第三方提供商 |
|---|---|
| us-central1-docker.pkg.dev/posit-images/cloud-workstations/workbench:latest | Posit Workbench(包括 RStudio Pro) |
如果您在使用 Posit Workbench IDE 或 Posit Workbench 容器映像时遇到问题,请在 GitHub 上向 Posit 报告。
Cloud Workstations 基础映像结构
Cloud Workstations 基础映像具有以下定义的结构:
- 基础映像入口点文件设置为
/google/scripts/entrypoint.sh。 在启动时,基础映像会按字典顺序运行
/etc/workstation-startup.d/*下的文件,以初始化工作站环境。文件及其行为如下:
000_configure-docker.sh:在工作站内配置和运行 Docker。010_add-user.sh:在 Cloud Workstations 中创建默认用户。由于永久性磁盘是动态附加到容器的,因此必须在工作站启动时添加用户,而不是在 Dockerfile 中添加。
020_start-sshd.sh:在容器中启动sshd服务。030_customize-environment.sh:以user的身份执行/home/user/.workstation/customize_environment。110_start-$IDE.sh:启动映像的 IDE。
Cloud Workstations 会将 Docker 映像存储在主目录中的
/home/.docker_data中,以便在会话之间保留映像。
如需在工作站启动期间添加其他功能,请将脚本添加到 /etc/workstation-startup.d/ 目录中:
此目录中的脚本默认以 root 身份运行。如需以其他用户身份执行脚本,请使用
runuser命令。由于脚本按字典顺序执行,因此我们建议您为脚本添加一个大于 200 的三位数前缀。
或者,如果您不想扩展工作站映像,可以在主目录中创建 customize_environment 脚本。
主目录修改
如果工作站配置指定了永久性主目录(这是默认行为),则在运行时,支持主目录的永久性磁盘会动态附加到容器。此流程会覆盖在容器映像构建时对 /home 目录所做的修改。
如需保留更新,请在容器运行时修改 /home 目录,方法是在 /etc/workstation-startup.d 目录中添加脚本,或在 /etc/profile.d 目录中添加用户专用配置。为加快此过程,请考虑将设置脚本作为后台进程运行(在命令末尾添加“&”符号 [&]),以避免阻塞容器启动。
以下是一些应移至容器运行时的 build 时配置示例:
- 按用户进行
git配置 - 主目录中克隆的
git代码库 - 直接用户配置,例如将文件放置在
$HOME/.config目录中 - 创建用户
用户创建和修改
由于持久性磁盘在运行时动态附加到容器,因此必须在工作站启动时添加用户,而不能在 Dockerfile 中添加。如需修改或创建其他用户,我们建议您更新 /etc/workstation-startup.d/010_add-user.sh,或创建在启动时执行的自定义脚本。
此外,您还可以通过更新 /etc/profile.d 中的文件来修改用户的默认 bash 配置文件。
更新预配置的安全 APT 密钥
Cloud Workstations 基础映像预安装了许多通过 Secure APT 从各种第三方代码库获取的工具。在安装过程中,系统会使用 gpg 导入代码库所有者提供的公钥,并将其放置在 /usr/share/keyrings/ 下的各个文件中。这些文件是从 /etc/apt/sources.list.d/ 下的相应 list 文件引用的。
这样,apt 就可以在与给定代码库互动时验证其完整性。
有时,第三方代码库的所有者可能会决定更改用于验证其代码库完整性的公钥,这会导致 apt 在与其互动时显示错误。如需解决此潜在问题,您可以使用 /google/scripts/refresh-preinstalled-apt-keys.sh,该工具可获取预安装的公钥的最新版本并重新导入它们。
列出已安装的 IDE 版本
部分 Cloud Workstations 基本映像预安装了 IDE。为方便起见,请参阅随附的 /google/scripts/preinstalled-ide-versions.sh 脚本,该脚本会列出映像中安装的 IDE 的名称和版本信息。
关闭 sudo root 权限
默认工作站用户在这些容器中具有 sudo root 访问权限。如需关闭对 Docker 容器的 root 访问权限,请在创建工作站配置时将 CLOUD_WORKSTATIONS_CONFIG_DISABLE_SUDO 环境变量设置为 true。
如需在创建工作站配置时通过 Google Cloud 控制台设置此环境变量,请按以下步骤操作:
- 创建工作站配置时,请完成“基本信息”和“机器配置”的配置。
- 在环境自定义对话框中,展开高级容器选项部分,然后选择环境变量。
- 依次点击添加添加变量。
- 输入
CLOUD_WORKSTATIONS_CONFIG_DISABLE_SUDO和true作为值。
自定义但不扩展映像
为方便起见,所有 Cloud Workstations 基本映像都会检查 /home/user/.workstation/customize_environment 中是否存在可执行文件,如果存在,则以 user 身份在后台运行该文件。这样,您就可以在启动时运行任何脚本或二进制文件。与 .profile 或 .bashrc 不同,此脚本仅在工作站启动时运行一次,而不是每次登录 shell 时运行一次。
由于 customize_environment 脚本以 user 身份运行,因此在编写脚本时,请务必根据需要更新权限。例如,如果您想在工作站每次启动时都安装 Emacs,则 customize_environment 的内容可能类似于以下内容:
#!/bin/bash
sudo apt-get update
sudo apt-get install -y emacs
customize_environment 的执行日志可在容器中的 /var/log/customize_environment 中找到,也会写入容器输出日志。成功执行 customize_environment 后,系统会在 /var/run/customize_environment_done 中创建一个文件。由于 customize_environment 与工作站启动并行运行,因此脚本安装的软件包最早可以在工作站启动后不久就可供使用。
防止空闲超时
为方便起见,所有 Cloud Workstations 基础映像都包含一个预安装的脚本,位于 /google/scripts/keep_alive.sh。此脚本会定期发送保持活动状态消息,从而防止工作站在您运行后台进程而没有直接互动时因空闲超时而关闭。