你的服务器还在用纯 Linux + Docker Compose 吗?为什么有人坚持不用面板?

文章导读
自托管圈已经有不少像 Unraid、TrueNAS、CasaOS 这类带界面的平台,但仍然有一部分人坚持最基础的玩法:普通 Linux 发行版上直接装 Docker,每个服务一个目录配一个 docker-compose.yml。这种做法的核心优势是配置显式、调试路径短,服务出问题能直接看到底层,也方便用脚本做备份。如果你也喜欢掌握细节,不想被界面掩盖复杂性,这套方案依然很可靠。
📋 目录
  1. 为什么还要坚持 Linux + Compose
  2. 具体怎么组织 Compose 文件
  3. 一个有意思的分歧:Caddy 是否该归 Docker 管
  4. 也有向更底层演进的玩法
  5. 如果你也在犹豫要不要换平台
A A

在自托管领域,近年来出现了不少带图形界面的管理平台,比如 Unraid、TrueNAS、CasaOS、ZimaOS 等等。它们确实降低了上手门槛,但依然有一批人选择最“原始”的方式:在普通 Linux 服务器上直接安装 Docker,然后用一个文件夹加一个 docker-compose.yml 管理每个服务。这个选择并不反主流,反而是一种值得认真考虑的运维思路。

为什么还要坚持 Linux + Compose

一位长期这样使用的用户总结了几个很实际的点:

  • 一切配置都是显式的。每个服务有独立的文件夹和 Compose 文件,出问题时知道去哪看配置、看日志,改完直接重建容器。
  • 层数更少,更容易调试。少了一层 UI 抽象,遇到网络或权限问题,从 Docker 和系统层面直接排查,反而更快。
  • 有 AI 辅助后学习成本降低。当遇到不理解的 Docker 或者 Compose 概念时,能很快得到说明,边修边学,慢慢就理解整个栈的结构。

这种风格在备份上也很有优势。有用户分享,自己用一个简单的 cron 任务,遍历存放 Compose 文件的目录,先把容器停掉,用 rsync 同步到远端,再重新启动服务。整个流程简单直接,也没有依赖某个特殊平台的功能。

具体怎么组织 Compose 文件

最常见的组织方式是:每个服务一个目录,目录里有对应的 docker-compose.yml,以及该服务运行时需要的配置文件或数据目录。多个互相依赖的服务也可以放在同一个 Compose 文件里。这样既保持了隔离,又让服务之间的关系一目了然。

有用户表示,自己甚至装了 Portainer,但几乎不用,只在快速清理旧镜像或卷时偶尔打开一下。对于长期稳定运行的服务器来说,命令行加 Compose 文件已经足够顺手。

一个有意思的分歧:Caddy 是否该归 Docker 管

在反向代理这个环节,有人坚持用 Docker Compose 跑 Caddy,也有人选择让 Caddy 直接运行在宿主机上。选择裸金属运行的一方给出的理由可能包括:减少一层容器网络转发、方便直接管理证书文件、或者对 Docker 网络模式不太放心。不过这并没有标准答案,纯粹看个人对资源占用和运维习惯的偏好。

也有向更底层演进的玩法

除了 Linux + Compose,还有用户分享了另一条路线:用非特权 Podman 容器,并通过 systemd unit 文件来管理,也就是 Podman Quadlets。这种方式比 Compose 更贴近系统原生服务,希望把容器生命周期的管理完全交给 systemd。如果你本来就很熟悉 systemd,这会是另一种可控性更高的选择。

如果你也在犹豫要不要换平台

如果你喜欢打开界面点点就能创建服务,那这些平台依然值得尝试。但如果你希望在出问题时能快速定位到具体配置、不想被 UI 隐藏细节,或者希望通过折腾 Docker 加深对服务器和网络的理解,那么直接 Linux + Compose 带来的“踏实感”是很有价值的。选择哪个方案,其实取决于你更愿意把时间花在学习还是花在操作上。