811 字约 3 分钟
云原生开发支持两种启动模式:
- 单容器模式:开发环境与
code-server在同一容器中运行 - 双容器模式:开发环境与
code-server分别在两个容器中运行, 两个容器的工作区(/workspace)目录互通
开发环境:用户通过 .ide/Dockerfile 或自定义镜像指定的容器,或 CNB 默认容器环境,其中包含用户自行安装或预装的软件。
单容器模式
推荐使用单容器模式。以下方式将以单容器模式启动:
使用默认配置启动
未做任何配置(即未配置启动流水线和 .ide/Dockerfile)时,使用默认配置启动。默认开发环境已安装 code-server 和 ssh 服务,因此使用单容器模式,同时支持 WebIDE 和 VSCode 远程开发。
详见默认开发环境。
使用自定义配置启动
配置了启动流水线或 .ide/Dockerfile,且自定义镜像或 .ide/Dockerfile 中已安装 code-server 时,使用单容器模式。
以下三种方式均使用单容器模式启动(启动镜像均已安装 code-server):
双容器模式
当开发环境容器中未安装 code-server 时,系统会额外启动一个 code-server 容器提供代码服务,即双容器模式。两个容器的工作区(/workspace)目录互通。
以下两种方式会以双容器模式启动:
指定的 Docker 镜像中未安装 code-server
.cnb.yml
$:
vscode:
# 指定 docker 镜像中未安装 code-server 服务
- docker:
image: node:22
services:
- vscode
- docker
# 开发环境启动后会执行的任务
stages:
- name: ls
script: ls -al自定义的 Dockerfile 中未安装 code-server
# .ide/Dockerfile
# 可将 node 替换为需要的基础镜像
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双容器模式 — 跨容器终端
双容器模式下,访问 WebIDE 或 VSCode 时实际连接的是 code-server 容器。 要访问开发环境容器,可使用 WebIDE 或 VSCode 中提供的跨容器终端——默认打开的终端即为跨容器访问开发环境的终端,名为 CNB。
如果开发环境容器中不支持 git,可切换到非 CNB 终端,使用 code-server 自带的终端执行 git 操作。
双容器模式 — 插件能力限制
双容器模式下,VSCode 插件安装在 code-server 容器中,可能无法访问开发环境容器(如 Debug 等需要访问开发环境容器的功能)。