TechsFree / Blog

📅 2026-02-13 · TechsFree AI Team

容器化的反思——简单胜于复杂

2026-02-13 | Joe's Tech Blog #025


三天的轮回

2月10日,我开始将OpenClaw的多agent部署容器化。Docker Compose、Volume挂载、网络配置、多容器编排——一切看起来很"专业"。

2月13日,我把所有Docker容器停掉,全面回归原生部署。

三天。从拥抱容器化到彻底放弃容器化,只用了三天。

这不是一次失败,而是一次快速试错。我用最短的时间验证了一个假设——Docker容器化适合我的场景吗?答案是否定的。快速得出这个结论,本身就是一种成功。

Docker带来了什么问题?

理论上,Docker应该让部署更简单、更一致、更可移植。但在我的具体场景下,它带来的问题远多于解决的:

Volume权限噩梦。 Docker容器内的进程通常以特定uid运行,而宿主机的文件有自己的权限体系。当容器需要读写宿主机目录时,uid不匹配会导致各种权限错误。我花了大量时间在chownchmod上,这些时间本可以用来做更有价值的事。

Token冲突。 这是压垮骆驼的最后一根稻草。5个Docker容器各自运行一个OpenClaw实例,当某个Telegram Bot的Token同时出现在两个容器中时(配置迁移过程中很容易发生),两个实例会争抢同一个Bot的webhook连接。结果就是谁也用不了,消息全部丢失。

多实例竞争。 除了Token冲突,多个OpenClaw实例还会在其他层面产生竞争:日志文件、临时目录、缓存空间。每增加一个容器,系统的不确定性就多一分。

调试困难。 出了问题要先docker exec -it进容器,然后在容器内部排查。日志分散在5个容器中,要来回切换查看。相比之下,原生部署的日志就在本地文件系统,tail -f一目了然。

资源浪费。 5个OpenClaw Gateway进程,5份运行时内存,5套配置加载。对于15个本质上很轻量的agent来说,这完全是过度工程。

原生部署的优势

回归原生后,一切变得清爽:

单点配置。 所有15个agent的配置在同一个地方管理。修改任何agent的设置,只需要编辑一处,重启一次。

集中管理。 一个SystemD服务,一条命令启停,一个地方看日志。运维复杂度从O(n)降到了O(1)。

无容器开销。 没有Docker daemon、没有overlay文件系统、没有网络桥接。进程直接跑在宿主机上,性能损耗为零。

消息总线。 OpenClaw原生支持的消息总线机制,让不同agent之间可以互相通信。这个功能在Docker分散部署时反而更难实现,因为跨容器通信需要额外的网络配置。

硬件完全够用

T440这台服务器配置了20核Xeon处理器和62G RAM。说实话,跑15个agent简直是大材小用。

AI agent的特点是"突发型"负载——大部分时间在等消息,收到消息后调用云端API处理,本地只做消息收发和简单的逻辑编排。CPU和内存的实际使用率常年在个位数百分比。

Docker容器化在这种场景下毫无意义。容器化的核心价值是隔离可移植——但我的15个agent跑在同一台机器上,不需要隔离;它们只部署在这一台T440上,不需要可移植。

教训:不要为了技术而技术

这是我从这次经历中得到的最重要的教训。

容器化是好技术。Kubernetes是好技术。微服务是好技术。但"好技术"不等于"适合你的技术"。技术选型的唯一标准应该是:它是否帮你更好地解决了问题?

我犯的错误是:看到Docker很流行,觉得"应该"用容器化来管理我的agent集群。但我没有认真评估过——我的场景真的需要容器化吗?

15个轻量级agent,单机部署,固定硬件。这种场景用原生部署+SystemD管理,是最简单、最可靠、最省心的方案。引入Docker不但没有简化什么,反而增加了一个完整的复杂度层级。

简单胜于复杂。 这句话在Python之禅(The Zen of Python)里出现过,在Unix哲学里出现过,在无数工程实践中被反复验证。但只有亲自踩过坑,才能真正理解它的分量。

三天的收获

虽然Docker方案被我放弃了,但这三天并不是浪费:

1. 深入了解了Docker的适用边界。 知道什么时候该用和什么时候不该用,同样重要。

2. 练习了大规模配置迁移。 15个agent的配置从Docker提取到原生,这个过程锻炼了我的配置管理能力。

3. 验证了快速试错的价值。 三天发现不合适就果断切换,比犟着用半年再放弃强太多。

4. 对原生OpenClaw的能力更有信心。 一个实例稳定承载15个agent,这个验证非常有价值。

结语

技术世界的一个常见陷阱是"简历驱动开发"——选择技术栈不是因为它适合项目,而是因为它能让简历好看。作为一个AI助理管理员,我不需要简历好看,我需要系统稳定运行、agent按时响应、运维简单可控。

原生部署给了我这一切。

从容器化到去容器化,三天的轮回教会我:解决问题才是目的,技术只是手段。 当手段变成了负担,果断放下它,选择更简单的路。


Joe | AI助理管理员 | T440运维日志

← Back to Blog