Dockge 实战:图形化管理 Docker Compose 服务
本教程带你快速部署 Dockge,通过 Web UI 高效管理 Docker Compose 项目。在线编辑配置、查看实时日志、一键启停服务,告别黑屏敲命令的繁琐,让容器运维更轻松。

Dockge 实战:图形化管理 Docker Compose 服务
大家好,我是周小码,一个写了 8 年 Java 后端、业余时间爱折腾自建服务的技术人。
你可能跟我之前一样:服务器上用 docker compose 部署了一堆服务——博客、数据库、反向代理、日志收集……每次需要改配置、看日志、重启某个容器时,就得 SSH 上去,cd 到对应目录,然后 docker compose up -d 或 docker compose logs -f。服务少的时候无所谓,多了之后光记住每个 compose 文件放哪儿就够头疼的。更别提有时候只是想看看某个服务启动报了什么错,终端里日志滚动的速度让人眼花缭乱。
所以我一直在找一个「既能保留 compose 文件的本地管理优势,又能提供友好 Web 界面」的工具。Portainer 我用了很久,但它的栈管理经验说实话不够丝滑——部署时加载图标转半天不知道在干什么,报错信息有时也让人摸不着头脑。
后来我发现了 Dockge。它由 Uptime Kuma 的作者 louislam 开发,定位很清晰:专门针对 Docker Compose 栈的可视化管理器。不是大而全的 Docker 管理平台,而是把 compose.yaml 的编辑、启停、日志这些高频操作做到极致好用。
这篇文章我会带你完成以下几件事:
- 在服务器上 3 分钟部署好 Dockge 自身
- 通过 Web UI 管理一个 Docker Compose 项目(以部署 Nginx + 静态网站为例)
- 掌握日常运维:在线编辑配置、查看实时日志、一键更新镜像
- 遇到的一些坑和注意事项
读完这篇,你就可以把 Dockge 作为日常 Docker 管理的主力工具了。我们开始吧。
一、前置条件
开始之前,确保你的环境满足以下几点:
- Docker 20+(或 Podman),这是硬要求
- 操作系统:Ubuntu / Debian Bullseye+ / CentOS / Fedora / ArchLinux 均可
- 不支持 Raspbian/Debian Buster 或更低版本
- 暂不支持 Windows
- 架构支持:armv7、arm64、amd64(覆盖率很广)
- 对 Docker Compose 有基本了解,知道
compose.yaml是什么就行
检查 Docker 版本:
bash
docker --version
docker compose version
如果 docker compose 提示命令不存在,你需要安装 Compose V2(Docker 20.10+ 内置)。
二、快速上手:部署 Dockge
Dockge 本身就是一个 Docker Compose 项目,所以部署它的过程就是在教它如何管理自己。我们按标准流程来,我会解释每一步在做什么。
第一步:创建必要的目录
bash
mkdir -p /opt/stacks /opt/dockge
cd /opt/dockge
/opt/stacks:这是你以后存放所有被管理 compose 项目的地方。Dockge 是「基于文件」的工具,所有 compose.yaml 都存在这里,不会被数据库锁住。你在 Dockge 界面里做的操作,最终都会落地成真实的文件,你依然可以用docker compose命令行直接操作它们。/opt/dockge:存放 Dockge 自身的数据。
第二步:获取 compose.yaml
bash
curl https://raw.githubusercontent.com/louislam/dockge/master/compose.yaml --output compose.yaml
这一步直接拉取官方最新的 compose 配置文件。你也可以用交互式生成器 https://dockge.kuma.pet 来自定义端口和堆栈路径,生成专属配置。
第三步:启动
bash
docker compose up -d
如果你用的是老版本 docker-compose(V1),用 docker-compose up -d。如果是 Podman 用户,确保装了 podman-docker 包。
启动完成后,浏览器访问 http://你的服务器IP:5001,就能看到 Dockge 的界面了。
为什么默认用 5001 端口? 作者刻意避开了常见的 80、8080 等端口,减少冲突。如果你想改,后面说。
更新 Dockge
以后有新版本,更新只要两条命令:
bash
cd /opt/dockge
docker compose pull && docker compose up -d
就这么简单。
三、实战示例:用 Dockge 部署一个 Nginx 网站
Dockge 部署好了,我们来实际操作一下,部署一个简单的 Nginx 静态网站。这个过程你会完整体验 Dockge 的核心工作流。
创建一个新的 Stack
进入 Dockge 界面后,你会看到一个添加新 Stack 的入口。填写以下信息:
- Stack Name:填
my-website(这个名称会对应/opt/stacks/my-website/目录) - compose.yaml 编辑器:在右侧的交互编辑器中粘贴以下内容:
yaml
services:
nginx:
image: nginx:alpine
container_name: my-nginx
restart: unless-stopped
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html
逐行解释一下这个 compose 文件:
- 使用轻量的
nginx:alpine镜像 - 容器命名为
my-nginx,方便识别 - 映射宿主机 8080 到容器 80
- 把当前目录的
./html挂载到 Nginx 默认网页目录
点击「Save」保存,然后点击「Up」——Dockge 会拉取镜像、创建容器、启动服务,整个过程你能实时看到进度条和日志输出。
部署前端页面
因为 compose 里我们把 ./html 做了挂载,需要创建一个测试页面:
bash
mkdir -p /opt/stacks/my-website/html
echo '<h1>Hello from Dockge-managed Nginx!</h1>' > /opt/stacks/my-website/html/index.html
打开浏览器访问 http://你的IP:8080,就能看到页面了。
在线编辑与热更新
想换个页面标题?在 Dockge 的 compose 编辑器里,你可以直接给 Nginx 加自定义配置。更实用的场景是:假设你想把端口改成 9090,直接在编辑器里把 8080:80 改成 9090:80,保存后点「Restart」就生效了,不用 SSH 切目录再敲命令。
查看实时日志
Dockge 内置了 Web Terminal 和日志查看器。点击你的 Stack,进入后就能看到:
- 容器状态(Running / Stoped)
- 实时日志输出,支持流式滚动
- 一键重启/停止
这对排查问题非常友好——不用 docker compose logs -f --tail=200 去试各种参数了。
四、几个值得了解的进阶能力
1. docker run 转 compose.yaml
很多教程给的是一行 docker run 命令。Dockge 内置了一个转换工具,把你的 docker run ... 粘贴进去,它会自动生成对应的 compose.yaml。这个功能对于从单容器命令迁移过来的人特别实用。
2. 多 Agent 支持(1.4.0+)
如果你有多个 Docker 主机,Dockge 支持多个 Agent,你可以在同一个界面管理不同机器上的 Compose 栈。不用来回切终端。
3. 权限管理(PUID/PGID)
如果你的系统不用 root 运行 Docker,需要在 compose 的环境变量里加上:
yaml
environment:
- DOCKGE_STACKS_DIR=/opt/stacks
- PUID=1000
- PGID=1000
PUID 和 PGID 必须同时设置才会生效,它们控制堆栈文件的属主和属组。如果没设置,默认会用 root 创建文件,可能导致权限问题。
五、常见问题与踩坑提醒
Q1:已有的 compose 项目怎么导入 Dockge?
Dockge 不会自动扫描你整个文件系统。你需要:
- 先停止原有服务
- 把 compose.yaml 移到
/opt/stacks/<项目名>/compose.yaml - 在 Dockge 右上角菜单点击「Scan Stacks Folder」
- 你的服务就会出现在列表中
Q2:Dockge 和 Portainer 冲突吗?
不冲突。它们侧重点不同,完全可以共存。如果你还需要管理 Docker 网络、单个容器(非 compose),Portainer 还是好选择。如果 compose 为主,Dockge 体验更好。
Q3:能管理不使用 compose.yaml 的单个容器吗?
Dockge 的设计哲学是「一切皆 compose」。如果你只想管理单个独立容器,用 Portainer 或 Docker CLI 更合适。Dockge 的目标就是让大家都用上 compose.yaml 的最佳实践。
Q4:volumes 挂载路径为什么强调「宿主机路径和容器路径必须一致」?
README 里特别提到一个容易踩的坑:
## ✔️ 正确示例
- /opt/stacks:/opt/stacks
## ❌ 错误示例(两端路径不匹配)
- /my-data:/opt/app/data ← 这样可能会把数据写到错误位置
原因是 Dockge 自身也需要知道映射关系来正确追踪文件位置。保持两端路径一致,能避免文件被写到意外目录。
六、总结
回顾一下我们今天做的事情:
- 搭建了 Dockge 自身(3 条命令搞定)
- 用它部署了一个 Nginx 网站,体验了创建/启动/在线编辑/日志查看的完整流程
- 了解了权限设置、已有项目导入、与 Portainer 的关系等常见问题
我个人的感受是:如果你用 Docker Compose 管理超过 3 个以上的自建服务,Dockge 能显著降低日常运维的认知负担。它不抢 Portainer 的地盘,而是专注于把 compose 这一件事做好——文件在你手里、界面好看、操作实时反馈,这些都让「管理 Docker 服务」这件事变得轻松不少。
下一步建议你:
- 把你现有的 compose 项目逐步迁移到 Dockge 管理
- 试试它的
docker run→ compose 转换功能,把零散的 run 命令规范化 - 配合反向代理(比如 Nginx Proxy Manager 或 Traefik)搭建你的私有服务面板
如果你在实际使用中遇到问题,Dockge 的 GitHub Discussions 社区挺活跃的,作者回复也比较及时。欢迎在评论区交流你的使用心得。