817 字约 3 分钟
单/双容器模式 说明云原生开发两种启动模式的差异与适用场景。
使用场景:自定义镜像后找不到常用工具、或插件功能异常时使用——先确认当前处于哪种模式, 再决定是否在镜像中安装 code-server。
云原生开发支持两种启动模式:
- 单容器模式:开发环境与
code-server在同一容器中运行。 - 双容器模式:两者分别运行在独立容器中,工作区(
/workspace)目录互通。
开发环境:由 .ide/Dockerfile、自定义镜像或 CNB 默认容器提供的环境,内含预装或用户安装的软件。
单容器模式
推荐使用单容器模式,以下方式将以单容器模式启动:
使用默认配置启动
未做任何配置(即未配置启动流水线和 .ide/Dockerfile)时,使用默认配置启动。 默认开发环境已安装 code-server 和 ssh 服务, 因此使用单容器模式,同时支持 WebIDE 和 VSCode 远程开发。
详见 默认开发环境。
使用自定义配置启动
配置了启动流水线或 .ide/Dockerfile,且镜像中已安装 code-server 时,使用单容器模式。
以下三种方式均使用单容器模式启动(启动镜像均已安装 code-server):
双容器模式
开发环境容器中未安装 code-server 时,系统会额外启动一个 code-server 容器提供代码服务, 即双容器模式。两者的工作区(/workspace)目录互通。
以下两种方式会以双容器模式启动:
# 方式 1:使用未安装 code-server 的 Docker 镜像
$:
vscode:
- docker:
image: node:22
services:
- vscode
- docker
stages:
- name: ls
script: ls -al# 方式 2:使用未安装 code-server 的自定义 Dockerfile
FROM node:20
RUN apt-get update && apt-get install -y git wget unzip openssh-server
ENV LANG C.UTF-8
ENV LANGUAGE C.UTF-8两种方式都未在开发环境容器中安装 code-server,系统会自动补充该容器,形成双容器模式。
双容器模式 — 跨容器终端
双容器模式下,WebIDE 或 VSCode 实际连接的是 code-server 容器。 要访问开发环境容器,可使用跨容器终端——默认打开的终端(名为 CNB)即连到开发环境。
如果开发环境容器中不支持 git,可切换到非 CNB 终端,使用 code-server 自带的终端执行 git 操作。
双容器模式 — 插件能力限制
双容器模式下,VSCode 插件安装在 code-server 容器中, 可能无法访问开发环境容器(如 Debug 等需要访问开发环境容器的功能)。