如何使用Docker Engine隔离安装Code-OSS(依赖Node.JS<17)
Docker Engine 隔离环境运行/编译Code-OSS实操指引
你对Docker隔离性的理解完全正确:容器内的所有软件安装、依赖修改、环境变更都被严格限制在容器的独立命名空间内,不会对宿主机的系统配置、软件包、依赖产生任何修改;哪怕容器内环境彻底损坏,直接删除对应容器/镜像即可完全清理,不会残留任何影响,核心隔离逻辑和VM一致,仅因为共享宿主机内核所以资源开销远低于VM。
前置说明
- Docker Engine和Docker Desktop的核心操作命令100%通用,不存在Desktop专属操作逻辑,不需要刻意区分两类文档。
- 全程不需要在宿主机安装任何版本的Node.js,所有相关依赖都封闭在容器环境内。
操作步骤
1. 拉取匹配版本要求的基础镜像
直接拉取官方Node 16系列镜像即可,满足Node.js < 17的版本要求,基于Debian稳定版构建,编译类依赖安装兼容性好:
docker pull node:16-bullseye
2. 启动交互式开发容器
启动容器时把宿主机上存放Code-OSS源码的目录挂载进容器,编译产出会直接写入宿主机目录,容器删除也不会丢失文件:
# 将命令中/path/to/your/code-oss-src替换为宿主机上Code-OSS源码目录的绝对路径 docker run -it --name code-oss-dev -v /path/to/your/code-oss-src:/workspace/code-oss node:16-bullseye bash
命令执行完成后会直接进入容器的bash终端,此时的操作环境和独立的Debian系统没有区别。
如果需要直接运行带图形界面的Code-OSS,启动容器时额外加上X11套接字挂载和环境变量即可,不需要在宿主机装任何GUI相关依赖:
docker run -it --name code-oss-dev \ -v /tmp/.X11-unix:/tmp/.X11-unix \ -e DISPLAY=$DISPLAY \ -v /path/to/your/code-oss-src:/workspace/code-oss \ node:16-bullseye bash
3. 容器内完成依赖安装、编译运行
进入容器后可以随意执行安装、编译操作,环境搞坏了直接退出后执行docker rm -f code-oss-dev删除容器,重新从基础镜像启动即可重来:
# 容器内操作:安装Code-OSS编译所需系统依赖 apt update && apt install -y build-essential libx11-dev libxkbfile-dev libsecret-1-dev git # 进入源码目录 cd /workspace/code-oss # 执行常规编译流程即可 npm install -g yarn yarn install yarn run build # 编译完成后可直接执行启动命令运行Code-OSS yarn run start
4. 自定义环境复用
如果当前容器内已经装好所有编译依赖,想下次直接使用不需要重复安装,可以把当前容器提交为自定义镜像:
# 先在容器内执行exit退出,回到宿主机终端执行 docker commit code-oss-dev code-oss-build-env:v1
后续使用直接基于这个自定义镜像启动容器即可,所有预装的依赖都会保留。
提示:容器本身是临时存储,没有通过挂载映射到宿主机的文件会在容器删除时一并清除,所有需要持久保留的代码、编译产出一定要存在挂载的宿主机目录下。
内容的提问来源于stack exchange,提问作者RaulS
相关产品推荐
相关产品推荐

