Dockge 实战:图形化管理 Docker Compose 服务

84 次阅读 0 点赞 0 评论 11 分钟原创技术教程

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

#Docker #Docker Compose #DevOps #自托管 #Dockge #运维工具 #容器管理
Dockge 实战:图形化管理 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 的编辑、启停、日志这些高频操作做到极致好用。

这篇文章我会带你完成以下几件事:

  1. 在服务器上 3 分钟部署好 Dockge 自身
  2. 通过 Web UI 管理一个 Docker Compose 项目(以部署 Nginx + 静态网站为例)
  3. 掌握日常运维:在线编辑配置、查看实时日志、一键更新镜像
  4. 遇到的一些坑和注意事项

读完这篇,你就可以把 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 不会自动扫描你整个文件系统。你需要:

  1. 先停止原有服务
  2. 把 compose.yaml 移到 /opt/stacks/<项目名>/compose.yaml
  3. 在 Dockge 右上角菜单点击「Scan Stacks Folder」
  4. 你的服务就会出现在列表中

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 自身也需要知道映射关系来正确追踪文件位置。保持两端路径一致,能避免文件被写到意外目录。

六、总结

回顾一下我们今天做的事情:

  1. 搭建了 Dockge 自身(3 条命令搞定)
  2. 用它部署了一个 Nginx 网站,体验了创建/启动/在线编辑/日志查看的完整流程
  3. 了解了权限设置、已有项目导入、与 Portainer 的关系等常见问题

我个人的感受是:如果你用 Docker Compose 管理超过 3 个以上的自建服务,Dockge 能显著降低日常运维的认知负担。它不抢 Portainer 的地盘,而是专注于把 compose 这一件事做好——文件在你手里、界面好看、操作实时反馈,这些都让「管理 Docker 服务」这件事变得轻松不少。

下一步建议你:

  • 把你现有的 compose 项目逐步迁移到 Dockge 管理
  • 试试它的 docker run → compose 转换功能,把零散的 run 命令规范化
  • 配合反向代理(比如 Nginx Proxy Manager 或 Traefik)搭建你的私有服务面板

如果你在实际使用中遇到问题,Dockge 的 GitHub Discussions 社区挺活跃的,作者回复也比较及时。欢迎在评论区交流你的使用心得。

项目地址:https://github.com/louislam/dockge

最后更新:2026-07-13T10:02:35

评论 (0)

发表评论

blog.comments.form.loading
0/500

暂无评论,快来发表第一条评论吧!