880 字约 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 时,系统会额外启动一个 code-server 容器提供代码服务,以支持 WebIDE 和 VSCode 客户端访问开发环境,即双容器模式。两个容器的工作区(/workspace)目录互通。
以下两种方式会以双容器模式启动:
指定的 docker 镜像中未安装 code-server
$:
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 容器。要访问开发环境容器,可使用 code-server 容器中提供的跨容器终端——在 WebIDE 或 VSCode 客户端中打开终端时,默认打开的即为跨容器访问开发环境的终端,名为 CNB。
如果开发环境容器中不支持 git 命令,可切换到非 CNB 终端,使用 code-server 自带的终端执行 git 操作。
双容器模式 — 插件能力限制
双容器模式下,VSCode 插件安装在 code-server 容器中,可能无法访问开发环境容器(如 Debug 调试等需要访问开发环境容器的功能)。