笔记 | Docker Compose 项目太多怎么管理?用 Dockge 集中管理 Stack,飞牛 NAS 实战(整理分享)

这两天一直在研究这个话题,踩了几个坑,把遇到的东西整理成文,供有需要的朋友参考。

Docker Compose 项目太多怎么管理?用 Dockge 集中管理 Stack,飞牛 NAS 实战

前言

Docker Compose 用久了以后,我越来越在意的不是“会不会写 YAML”,而是项目一多,配置文件、.env、启动命令和日志散在不同目录里,想改一个服务时总要先找路径、开终端、确认自己现在操作的是哪一套环境。Dockge 吸引我的地方,不是它能彻底替代命令行,而是它给原生 Compose 项目加了一层更直观的 Web 管理界面:Stack 还是 Stack,docker-compose.yml 也依然保留,只是启动、重启、编辑和查看状态这些高频动作能够集中到浏览器里完成。

这次我在飞牛 NAS 上实际部署 louislam/dockge:1.5.0,把 Web 端口映射到 7001,再把已有的 vaultwardenexer 项目复制进 Dockge 的 stacks 目录,通过“扫描堆栈文件夹”让它接管现有 Compose 项目。确认本地管理正常以后,再用 cpolar 把 7001 页面映射到公网,先验证随机地址,最后切换到固定二级子域名 dockge。整个过程更像是给现有 Compose 工作流补一个管理面板,而不是重新发明一套容器管理方式。我更看重的是这种“不改原来习惯,只减少重复操作”的方式:Compose 文件依旧能直接打开,项目目录依旧能自己维护,Dockge 只是把常用动作收进一个页面。对于已经有不少自建服务的人来说,这比重新迁移到另一套封闭管理逻辑更容易接受。

1. Dockge 到底解决了什么坑?

Dockge 是一款面向 Docker Compose 的 Web UI 管理工具。

它的核心思路并不是绕开 Compose,而是把 Compose 项目,也就是 stacks,集中到浏览器里管理。

常见操作包括:

  • 查看现有 Stack;
  • 在线编辑 Compose 配置;
  • 启动、停止、重启和更新服务;
  • 查看容器日志;
  • 配合 .env 使用环境变量;
  • 管理多个 Compose 项目。
我比较看重的一点,是它依然围绕标准 Compose 文件工作。对于已经习惯 docker-compose.yml 的人来说,这意味着不会因为用了 Web UI,就把原来的项目结构完全丢掉。

但“告别命令行”这句话也不能理解得太绝对——至少这篇安装过程本身仍然得 SSH、Docker 命令、目录复制和 Compose 启动。它真正减少的是后续日常管理时反复敲命令的频率

2. 部署前先确认飞牛的 SSH 和 Docker

2.1 开启 SSH

先在飞牛设置里开启 SSH 服务。

然后通过终端连接到飞牛。

这一步核心是为了后面拉镜像、创建目录和启动 Dockge。

2.2 检查 Docker

使用下面的命令检查 Docker:

docker -v
systemctl status -v

也能够直接在飞牛主页查看 Docker 状态。

SSH 和 Docker 都正常以后,再继续安装 Dockge。

3. 拉取 Dockge 1.5.0 镜像

这次使用的版本是:

louislam/dockge:1.5.0

先拉取镜像:

docker pull louislam/dockge:1.5.0

版本号在这里是明确写死的,所以后续配置继续沿用 1.5.0,没有擅自换成 latest

4. 创建目录并写入 Compose 配置

先创建 Dockge 目录:

mkdir -p /docker/dockge
cd /docker/dockge

接着创建:

docker-compose.yml

vi docker-compose.yml

Compose 内容如下:

services:
  dockge:
    image: louislam/dockge:1.5.0
    restart: unless-stopped
    ports:
      - 7001:5001
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /data/dockge/data:/app/data

      - /data/dockge/stacks:/opt/stacks
    environment:

      - DOCKGE_STACKS_DIR=/opt/stacks

这份配置里有几个关键关系:

  • 镜像:louislam/dockge:1.5.0
  • 外部端口:7001
  • 容器端口:5001
  • Docker Socket:/var/run/docker.sock:/var/run/docker.sock
  • Dockge 数据目录:/data/dockge/data:/app/data
  • Stack 目录:/data/dockge/stacks:/opt/stacks
  • DOCKGE_STACKS_DIR=/opt/stacks
  • 重启策略:unless-stopped
这里有一个值得要注意的路径关系:安装命令进入的是 /docker/dockge,但 Compose 挂载的数据和 Stack 路径使用的是 /data/dockge/...。两者并不是同一个目录,复现时要按当前配置分别理解,不要混在一起。

5. 启动 Dockge 并确认本地页面

执行:

docker compose up -d

然后查看容器状态:

docker ps

容器启动后,在浏览器打开:

http://飞牛IP:7001

页面能正常打开,说明 7001:5001 的映射已经生效。

6. 第一次登录先设置账号密码

第一次进入 Dockge 时,先设置登录账号和密码。

登录以后,能够进入管理页面查看当前项目。

到这里,Dockge 本身已经跑起来了,但真正有用的下一步,是把原来就存在的 Compose 项目纳入它的 stacks 目录。

7. 把已有 Compose 项目交给 Dockge 管理

源环境里已经有 exer 项目,同时示例命令还复制了 vaultwarden

把原项目目录复制到:

/data/dockge/stacks/

具体命令保持如下:

cp -a  /docker/vaultwarden/ /data/dockge/stacks/vaultwarden/
cp -a  /docker/exer /data/dockge/stacks/exer/

这组命令实际上同时复制了两个项目:

  • /docker/vaultwarden/
  • /docker/exer
如果项目还依赖环境变量,目录里还应一并带上:
  • docker-compose.yaml
  • .env
这说明 Dockge 并不是凭空生成已有项目配置,而是基于原来的 Compose 文件和环境变量文件继续管理。

8. 扫描 stacks 目录,让 Dockge 识别项目

复制完成以后,回到 Dockge 页面。

点击右上角账号图标,选择:

【扫描堆栈文件夹】

扫描完成后,可以看到项目被识别出来。

到这里,已有 Compose 项目才真正进入 Dockge 的管理范围。

这条链比“安装完 Dockge 就自动接管所有容器”更准确:

复制项目目录 → stacks 目录 → 扫描堆栈文件夹 → Dockge 识别项目。

9. 用 Web 界面完成一次重启验证

识别项目以后,可以直接在 Dockge 中执行重启。

这一步验证的是最实际的使用价值:原来得进入对应目录再执行 Compose 命令,现在可以在统一页面里完成常用操作。

我更愿意把 Dockge 理解成Compose 项目的控制台,而不是 Docker 本身的完全替代品。

10. 本地管理正常以后,再考虑远程访问

如果 Dockge 只在飞牛局域网里使用,7001 已经足够。

但如果人在外面还得查看或管理这些 Stack,就要再解决 Web 管理页面的公网入口。

这时 cpolar 只负责网络这一层:

Dockge 继续负责 Compose 项目管理,cpolar 只把本地 7001 页面提供到公网。

这两个职责分开以后,排错也更清楚。

11. 安装 cpolar

执行安装命令:

sudo curl https://get.cpolar.sh | sh

安装完成后检查服务状态:

sudo systemctl status cpolar

服务启动后,通过主机 IP + 9200 进入 cpolar Web 管理页面。

这里同时出现了两种访问写法:

http://ip:9200

以及:

http://localhost:9200/

两种地址的适用场景不同,实际访问时应以当前设备真正可达的管理地址为准。

12. 先用随机域名验证 7001

进入【隧道管理 → 创建隧道】,配置为:

  • 隧道名称:dockge
  • 协议:http
  • 本地地址:7001
  • 域名类型:随机域名
  • 地区:China Top

创建成功后,在在线隧道列表中可以看到公网地址。

从其他设备访问。

Dockge 页面能够正常打开。

到这里,随机公网访问链已经成立:

Dockge 7001 → cpolar 随机公网地址 → 外部浏览器访问成功。

13. 长期使用,再换固定二级子域名

如果需要长期远程管理,固定地址更方便。

进入预留功能。

选择保留二级子域名。

地区记录为:

china Top

这次使用的名称是:

dockge

保留成功后,回到【隧道管理 → 隧道列表】,找到对应隧道并编辑。

修改为:

  • 域名类型:二级子域名
  • Sub Domain:填写已经保留的二级子域名
  • 地区:China Top
点击更新。

更新以后,在线隧道列表里的随机地址会切换成固定二级子域名。

最后再通过固定地址访问。

页面可以正常打开。

总结

Dockge 最适合解决的,不是“以后再也不用碰命令行”,而是已有的 Docker Compose 项目越来越多以后,日常管理缺少一个统一入口

这次实际跑通的链路是:

飞牛 SSH → Docker → louislam/dockge:1.5.07001:5001 → 设置账号 → 复制 vaultwarden / exer/data/dockge/stacks → 扫描堆栈文件夹 → Web 页面识别项目 → 重启验证 → cpolar → 随机公网地址 → 固定二级子域名 dockge

其中几个技术细节值得单独记住:

  • 安装目录:/docker/dockge
  • Dockge 数据目录:/data/dockge/data
  • Stack 目录:/data/dockge/stacks
  • 容器内 Stack 目录:/opt/stacks
  • DOCKGE_STACKS_DIR=/opt/stacks
  • Docker Socket:/var/run/docker.sock
  • Dockge 本地端口:7001
  • cpolar 管理端口:9200
  • 隧道名称:dockge
  • 地区记录里同时出现 china TopChina Top
  • 固定二级子域名:dockge
我更喜欢这种思路:Compose 文件继续是标准 Compose 文件,Dockge 只是把高频管理动作做成一个更直观的界面。 这样既保留原来的项目结构,也不用为了看状态、重启服务或切换项目,反复在多个目录和终端窗口之间来回跳。
以上就是这次整理的全部内容,希望对你有所启发。如果有不同见解,欢迎在评论区交流讨论。

评论 (0)

暂无评论