告别环境配置烦恼:基于 Docker 打造丝滑的 All In One远程开发环境
本文最后更新于 2025年11月9日 晚上
频繁切换设备、重复配置开发环境是每个开发者都会遇到的痛点。更糟糕的是,当你尝试让 AI Agent 帮你自动化操作时,一个错误的命令可能就会把你的本地环境搞崩溃。有没有一种方案既能实现环境的快速迁移,又能隔离 AI 操作带来的风险呢?
答案就是:基于 Docker 构建 All In One 远程开发容器。将所有开发环境打包到 Docker 镜像中,部署在服务器上,本地通过 SSH 连接进行开发。这样不仅可以在任何设备上快速接入开发环境,还能让 AI Agent 在隔离的容器中自由操作,即使环境崩溃也只需重启容器,宿主机安然无恙。
容器的优势
想象一下这样的场景:
- 周一早上,你坐在办公室的工作站前,代码跑得飞快;
- 周二家里用笔记本,发现本地环境和办公室的不一样,花了“亿”点时间调试发现是 Python 版本差了个小版本。
- 周三你出差了,带着公司的 MacBook,又要重新配置一遍环境。
- 周四你让 AI Agent 帮你自动化部署,结果一个
rm -rf命令把整个开发环境置空了,本地机器直接进了 “ICU”。
这就是传统本地开发的”魔幻现实”。每个人都在本地配置自己的环境,自由度很高,但团队协作时就成了”环境大乱斗”——你的 Node 版本是 18,我的是 16,他的是 14,谁都不知道代码在别人电脑上能不能跑。
![]()
但如果你的开发环境就“住”在远程服务器上呢 🤔?
所有的工具、依赖、配置都被打包进 Docker 容器里,无论你在办公室、家里还是咖啡馆,只要一条 SSH 连接,就能接入完全相同的开发环境。
更妙的是,即使 AI Agent 手滑执行了危险命令,也只是容器崩溃,宿主机毫发无损,重启容器就能“起死回生”。这样既标准化了团队的开发环境,又给了 AI 自由操作的沙箱,还能随时随切换工作地点。
graph TB
A["📱 本地设备<br/>MacBook/Windows/Linux"] -->|SSH 连接| B["🐳 远程服务器"]
B --> C["容器1<br/>Node.js 环境"]
B --> D["容器2<br/>Python 环境"]
B --> E["容器3<br/>Go 环境"]
C --> F["工作空间<br/>持久化存储"]
D --> F
E --> F
G["AI Agent"] -->|隔离操作| C
G -->|隔离操作| D
G -->|隔离操作| E
H["环境崩溃?"] -->|重置容器| I["✨ 瞬间恢复"]
style A fill:#e1f5ff
style B fill:#fff3e0
style C fill:#f3e5f5
style D fill:#f3e5f5
style E fill:#f3e5f5
style F fill:#e8f5e9
style G fill:#fce4ec
style I fill:#c8e6c9
当然,你也可以直接 All In One,在云厂商的 Linux 服务器上部署容器,还可以使用云厂商的内网源:
graph LR
A["💻 本地设备"] -->|SSH 连接| B["🐳 远程 Docker"]
B --> C["容器内环境<br/>Node.js/Python/Go"]
C --> D["📁 代码仓库<br/>Git 操作<br/>编译构建<br/>测试运行"]
E["📦 工作空间<br/>持久化存储"] -.->|挂载| D
G["⚡ 云厂商内网镜像<br/>npm/pip/maven"] -.->|加速依赖安装| D
D -->|❌ 环境崩溃| F["🔄 force-recreate<br/>容器重建"]
F -->|✨ 秒级恢复到初始状态| C
style A fill:#e1f5ff,stroke:#01579b,stroke-width:2px
style B fill:#fff3e0,stroke:#ff9800,stroke-width:3px
style C fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
style D fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px
style E fill:#fce4ec,stroke:#c2185b,stroke-width:2px
style F fill:#ffccbc,stroke:#d84315,stroke-width:2px
style G fill:#fff9c4,stroke:#f57f17,stroke-width:2px,stroke-dasharray: 5 5
接下来,我们就来看看如何构建这套 All In One 远程开发环境。
准备工作
其实准备工作,主要分为两个部分:
- 构建部分: 构建远程开发容器需要的基础环境。
- 部署部分: 将容器部署到宿主机上,使用宿主机的算力,容器环境,通过 SSH 连接进行开发。
构建部分
想要打造一个远程开发容器,首先得把它”造”出来。这个过程就像工厂,你需要一个组装厂(构建环境)和一个仓库来存放制品(镜像仓库)。
传统做法是在本地安装 Docker Engine、Docker Desktop,然后手动构建镜像,最后打包成 tar 文件传到服务器上。这个流程不仅繁琐,而且每次更新镜像都要重复一遍,简直是在折磨自己。
优雅的方案是:使用云端构建环境 + 远程镜像仓库。
这里推荐一个小技巧,直接用 cnb.cool 来搞定这一切。
CNB 提供了两个核心能力:云开发环境和制品库。云开发环境内置了 Docker 支持,可以直接在浏览器里编写 Dockerfile 并构建镜像;制品库则负责存储这些构建好的镜像,方便随时拉取使用。整个流程如下:
graph LR
subgraph CNB["🌐 CNB 平台"]
A["☁️ 云开发环境<br/>内置 Docker 支持"]
B["📦 制品库<br/>镜像存储"]
end
C["📝 编写 Dockerfile"] --> A
A --> D["🔨 构建、测试、推送镜像"]
D --> B
B --> F["🚀 部署服务器<br/>docker pull"]
F --> G["✅ 运行容器<br/>开发环境就绪"]
style CNB fill:#fff9e6,stroke:#ff9800,stroke-width:3px
style A fill:#e1f5ff,stroke:#01579b,stroke-width:2px
style B fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px
style C fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
style D fill:#fce4ec,stroke:#c2185b,stroke-width:2px
style F fill:#e0f2f1,stroke:#00796b,stroke-width:2px
style G fill:#c8e6c9,stroke:#388e3c,stroke-width:2px
这样做的好处显而易见:
- 本地轻量化:无需在本地安装 Docker 环境,告别本地磁盘占用。镜像更新只需云端重新构建推送,无需手动传输文件。
- 网络加速:CNB 对 Docker Hub 提供网络加速,基于官方镜像构建时无需担心网络问题,告别本地网络的不确定性。
- 版本管理:制品库支持镜像版本控制,可随时回滚到历史版本。同时提供高带宽下载,部署速度更快。
之前也有做过一篇 CNB 的入门文章,可以参考:
甚至,本篇文章,最后实现的效果,就是启发自 CNB 的“云原生开发”。最后实现的效果也类似。可能最大的不同是 CNB 的“云原生开发”用的是 CNB 的算力,而本篇文章的“All In One 远程开发”,是使用宿主机的算力,容器环境。
部署部分
相比构建环节,部署就简单多了。你只需要一个 Docker 的环境:
- Linux 服务器:安装 Docker Engine
- Windows/macOS:使用 Docker Desktop 或 Rancher Desktop
💡 推荐方案:正如前文说的,优先选择 Linux 服务器部署。即使在本地搭建,也建议使用 Linux 虚拟机 + Docker Engine 的“套娃”组合,这样可以获得更好的性能和稳定性。
部署流程非常直观:
graph LR
A["🎯 准备 Docker 环境"] --> C["⚙️ 配置容器参数"]
C --> D["📂 挂载工作目录<br/>持久化代码"]
C --> E["🔌 映射 SSH 端口 → 宿主机端口"]
D --> G["🚀 启动容器<br/>docker run / docker-compose"]
E --> G
G --> I["💻 本地 IDE 连接<br/>VSCode/JetBrains"]
style A fill:#e1f5ff,stroke:#01579b,stroke-width:2px
style C fill:#fff3e0,stroke:#ff9800,stroke-width:2px
style D fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
style E fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
style G fill:#fce4ec,stroke:#c2185b,stroke-width:2px
style I fill:#fff9e6,stroke:#f57c00,stroke-width:2px
核心步骤只有两个:
- 拉取镜像:从制品库下载构建好的开发环境镜像。
- 启动容器:挂载工作目录,映射 SSH 端口,配置网络访问。
支持创作
制作教程不易,如果热心的小伙伴,想支持创作,可以加入我们的电圈(还可以解锁远程协助、好友位😃):
- Mintimate的电圈: https://afdian.com/a/mintimate
- Mintimate的微信赞赏码 👉 如果认为本教程对你很有帮助,可以请我喝咖啡 ☕
志同道合的小伙伴也是知音难觅。
- 开发者爱好群: 👉 如果你对云服务器、CDN、云数据库和Linux等云计算感兴趣,亦或者喜欢编程、设计、产品、运营等领域,欢迎加入我们的开发者爱好群,一起交流学习(目前可能就我一个人?🤔,毕竟才刚刚创建~)。
当然,也欢迎在B站、YouTube或微信公众号上关注我们:
- Bilibili: https://space.bilibili.com/355567627
- YouTube: https://www.youtube.com/@mintimate/featured
- 微信公众号: MintimateBlog
更多:
如果你也想使用腾讯云的轻量应用服务器部署 All In One 的开发环境;那么你可以使用博客的专属链接购买体验:
云原生构建
本次使用 CNB 的云原生进行构建,本次的构建可以参考我的仓库:
正如前文所说,我们可以使用 CNB 的云原生开发:

上面有 Docker Engine 的支持,可以直接在浏览器里编写 Dockerfile 并构建镜像:

接下来我们需要编写 Dockerfile 来编写我们的开发环境。
基础镜像
建议基础镜像使用完整的 Debian 系列,这样可以保证系统的完整性,避免出现一些意外情况。
当前的 Debian 镜像,可以到 https://hub.docker.com/_/debian 查看,这里选择了 bookworm-slim 版本。
1 | |
解释一下 keypoint:
- 安装基础软件:安装了一些常用的软件,比如
zsh、curl、unzip、wget、git、openssh-server、vim、webp、locales、fonts-noto-cjk、tzdata。 - 开启 SSH 服务:开启了 SSH 服务,并修改了端口为
36000,用于远程登录和。 - 设置字符集:设置了中文的字符集,以便支持命令行输入中文。
- 设置时区:设置了上海时区,以便支持时区相关的操作。
- 设置工作目录:设置了工作目录为
/data/workspace,便于持久化目录和 VSCODE 等工作空间。
我们后续是直接 SSH 远程到这个容器内,自然需要初始化一下 SSH 密码或者映射一下宿主机的密钥。
我们可以设置一个 entrypoint.sh 脚本,在容器启动时执行,来完成这个操作:
1 | |
到此,一个可以远程 SSH 访问的开发环境就完成了。
开发环境
接下来,我们再融合常见的开发环境即可。比如 Go、Node.js:
1 | |
![]()
有时候也需要 python 环境,我们这里再按一个 miniconda 的环境:
1 | |
最后的 Dockerfile 就完成了:

构建镜像
和以往一样,我们使用 docker build 命令进行镜像的构建:
1 | |

当然,在推送到制品库之前,我们需要先进行一些测试,比如:
1 | |

构建后,可以在制品库中查看构建的镜像:

部署开发环境
接下来,我们就在目标服务器中部署我们的开发环境。正如前文所说,建议在 Linux 服务器上操作,可以直接使用云厂商的镜像源,同时也可以发挥我们 SSH 的优势,直接通过 SSH 连接到服务器上的容器进行操作。

建议配置: 最少需要 4G 内存以上的服务器,以便支持开发环境。如果跑的业务比较多,可以适当增加内存。
在安装好了 Docker 后,我们创建一个 docker-compose.yml 文件,用于启动我们的开发环境:
1 | |

之后,使用 docker 相关命令,你可以直接进入容器内:
1 | |

当然,我的制作的这个镜像是支持 ARM64 和 AMD64 架构的。所以,你也可以再 ARM64 架构设备上使用这个镜像,比如: Kali Arm64 系统。

接下来,我们看看本地如何使用这个容器。
使用指南
刚刚我们在镜像的构建阶段,就已经把 SSH 配置上去了,自然是为了容器启动后,本地的 VSCODE、JetBrains 可以直接通过 SSH 连接到容器内进行开发。
以 Codebuddy 为例,我们需要在 Codebuddy 中配置一个 SSH 连接,然后就可以直接在 Codebuddy 中进行开发了:

之后再双击 Item 即可:

这样的好处是,AI Agent 在容器内“大闹天宫”、“为所欲为”后,我们的宿主机环境也不会有影响。
演示的是 Codebuddy,同理在 VSCODE 和 JetBrains 等 IDE 上也是一样的(只要是支持 IDE 远程连接的,基本上主流 IDE 都支持)。
![]()
常见问题
通篇下来,你肯定也有很多的疑问。
如何配置镜像源
如果你部署的服务器是云厂商的(比如腾讯云、阿里云等),强烈建议配置对应的内网镜像源,可以大幅提升依赖安装速度。以下是各个工具的镜像源配置方法(以腾讯云为例):
1 | |
配置完镜像源后,依赖安装速度会有显著提升,特别是在云服务器内网环境下。
容器占用空间过大
首先,如何确定一个容器占用空间过大?
1 | |

如果看到容器确实很大,可以看看是不是有很多核心转储文件(core dump):
1 | |
这些文件是容器内进程崩溃时生成的,用于调试。你可以直接删除这些文件:
1 | |
END
其实呢? 我们这篇文章,就是一个云原生开发环境的制作教程。
云原生这个概念其实已经非常流行了,使用云原生技术来构建一个 All In One 的开发环境,确实是一个非常好、非常酷的选择。希望大家也可以通过这篇文章,感受到云原生带来的便利。
最后,如果你觉得本篇教程对你有帮助,欢迎加入我们的开发者交流群: 812198734 ,一起交流学习,共同进步。
