Dockge:开源Docker Compose可视化管理神器,轻量级Portainer替代
背景
管理 Docker 容器时,你是否遇到过这些烦恼:
- 命令行操作繁琐,容易出错
- Portainer 界面复杂,加载慢
- docker-compose.yaml 文件修改不方便
- 多台服务器管理需要频繁切换
- 想用命令行又记不住那么多参数
今天介绍一款专为 Docker Compose 设计的开源管理工具——Dockge,在 GitHub 上已获得17K+ Star。
什么是 Dockge?
Dockge 是一个美观、易用、响应式的自托管 Docker Compose 堆栈管理器,由 Uptime Kuma 的作者开发。
核心特性:
| 特性 | 说明 |
|---|---|
| 可视化管理 | 图形化界面管理 compose 项目 |
| 交互式编辑器 | 可视化编辑 docker-compose.yaml |
| Web 终端 | 内置交互式容器终端 |
| 多主机支持 | 一界面管理多台 Docker 服务器 |
| 命令转换 | docker run 转 compose.yaml |
| 文件自主 | compose 文件存储在本地,不锁定 |
| 实时响应 | 进度和终端输出实时显示 |
GitHub 地址:https://github.com/louislam/dockge
官网:https://dockge.kuma.pet
Dockge vs Portainer
| 对比项 | Dockge | Portainer |
|---|---|---|
| 定位 | 专注于 Compose | 通用容器管理 |
| 界面 | 现代化简洁 | 功能丰富但复杂 |
| 启动速度 | 快速响应 | 较慢,加载久 |
| 文件管理 | compose 文件本地存储 | 数据库存储 |
| 学习曲线 | 低,上手快 | 中等 |
| 资源占用 | 轻量 | 较重 |
| 多主机 | ✅ 原生支持 | ✅ 支持 |
| 单容器管理 | ❌ 不支持 | ✅ 支持 |
Dockge 的设计理念:
- 用 docker-compose.yaml 做一切
- 不绑架你的文件,存储在本地
- 专注于堆栈管理,而非通用功能
- 界面美观,响应迅速
快速上手
安装
方式一:一键部署(推荐)
# 创建目录mkdir-p/opt/stacks /opt/dockgecd/opt/dockge# 下载 compose.yamlcurlhttps://raw.githubusercontent.com/louislam/dockge/master/compose.yaml--outputcompose.yaml# 启动服务dockercompose up-d# 访问管理界面# http://localhost:5001方式二:自定义配置
# 自定义端口和存储路径curl"https://dockge.kuma.pet/compose.yaml?port=8080&stacksPath=/home/user/stacks"--outputcompose.yaml首次配置
- 访问
http://localhost:5001 - 创建第一个堆栈(Stack)
- 粘贴或编写 docker-compose.yaml
- 点击部署
核心功能详解
1. 堆栈管理
Dockge 的核心功能是管理 Docker Compose 堆栈:
创建堆栈:
1. 点击 "Create Stack" 2. 输入堆栈名称(如 my-website) 3. 编写或粘贴 compose.yaml 4. 点击 "Deploy"管理操作:
| 操作 | 说明 |
|---|---|
| Start | 启动堆栈 |
| Stop | 停止堆栈 |
| Restart | 重启堆栈 |
| Delete | 删除堆栈 |
| Pull | 更新镜像 |
| Up | 重新构建并启动 |
| Down | 停止并移除容器 |
Compose 文件示例:
version:'3.8'services:web:image:nginx:alpinecontainer_name:my-websiteports:-"80:80"-"443:443"volumes:-./html:/usr/share/nginx/htmlrestart:unless-stoppedredis:image:redis:7-alpineports:-"6379:6379"volumes:-redis_data:/datarestart:unless-stoppedvolumes:redis_data:2. 交互式编辑器
Dockge 提供功能完整的 YAML 编辑器:
编辑器特性:
- 语法高亮
- 自动补全
- 错误提示
- 格式化
- 代码折叠
快捷操作:
| 快捷键 | 功能 |
|---|---|
| Ctrl+S | 保存 |
| Ctrl+Z | 撤销 |
| Ctrl+F | 搜索 |
| Tab | 缩进 |
3. Web 终端
内置交互式容器终端,无需另开终端:
1. 点击堆栈中的终端图标 2. 选择要进入的容器 3. 直接执行命令支持的操作:
- 查看日志(实时)
- 进入容器内部
- 执行运维命令
- 调试问题
4. docker run 转 compose
Dockge 可以将 docker run 命令转换为 compose.yaml:
使用方法:
1. 点击 "Import" 2. 粘贴 docker run 命令 3. 自动生成 compose.yaml 4. 确认后部署转换示例:
输入: docker run -d --name nginx -p 80:80 -v /data:/usr/share/nginx/html nginx:alpine 输出: services: nginx: image: nginx:alpine container_name: nginx ports: - "80:80" volumes: - /data:/usr/share/nginx/html restart: "no"5. 多主机管理
Dockge 支持同时管理多台 Docker 服务器:
添加远程主机:
1. 设置 → Agents 2. 点击 "Add Agent" 3. 输入远程服务器信息 4. 复制安装命令到远程服务器执行使用场景:
- 管理多台服务器的容器
- 统一监控所有服务状态
- 集中部署和运维
6. 实时状态监控
界面实时显示容器状态:
状态指示:
| 状态 | 颜色 | 说明 |
|---|---|---|
| Running | 绿色 | 运行中 |
| Stopped | 灰色 | 已停止 |
| Error | 红色 | 错误 |
| Updating | 蓝色 | 更新中 |
实时信息:
- 容器健康状态
- 资源使用情况
- 镜像版本
- 启动时间
实战场景
场景1:快速部署博客系统
使用 Docker Compose 部署 Halo 博客:
version:'3.8'services:halo:image:halohub/halo:2.17container_name:haloports:-"8090:8090"volumes:-./halo:/root/.halo2environment:-HALO_SECURITY_INITIAL_USER_PASSWORD=your-passwordrestart:unless-stoppednetworks:-halo_networkmysql:image:mysql:8.1container_name:halo-mysqlports:-"3306:3306"volumes:-./mysql:/var/lib/mysqlenvironment:-MYSQL_ROOT_PASSWORD=your-mysql-password-MYSQL_DATABASE=halorestart:unless-stoppednetworks:-halo_networknetworks:halo_network:部署步骤:
1. 在 Dockge 创建新堆栈 "halo-blog" 2. 粘贴上述 compose.yaml 3. 修改密码 4. 点击 Deploy 5. 访问 http://localhost:8090场景2:搭建 Next.js 应用
version:'3.8'services:nextjs:image:node:20-alpinecontainer_name:nextjs-appworking_dir:/appvolumes:-./app:/app-/app/node_modulesports:-"3000:3000"environment:-NODE_ENV=production-DATABASE_URL=postgres://user:pass@db:5432/myappcommand:sh-c "npm install&&npm run start"depends_on:-dbrestart:unless-stoppeddb:image:postgres:15-alpinecontainer_name:nextjs-dbvolumes:-postgres_data:/var/lib/postgresql/dataenvironment:-POSTGRES_USER=user-POSTGRES_PASSWORD=pass-POSTGRES_DB=myapprestart:unless-stoppedvolumes:postgres_data:场景3:家庭影院系统
version:'3.8'services:jellyfin:image:jellyfin/jellyfin:latestcontainer_name:jellyfinports:-"8096:8096"-"8920:8920"volumes:-./config:/config-./cache:/cache-./media:/mediaenvironment:-TZ=Asia/Shanghairestart:unless-stoppeddevices:-/dev/dri:/dev/drijackett:image:linuxserver/jackett:latestcontainer_name:jackettports:-"9117:9117"volumes:-./jackett:/config-./jackett/downloads:/downloadsenvironment:-PUID=1000-PGID=1000-TZ=Asia/Shanghairestart:unless-stopped高级配置
自定义堆栈目录
默认情况下,堆栈存储在/opt/stacks。如需修改:
# 创建目录mkdir-p/your/custom/path# 启动时指定curl"https://dockge.kuma.pet/compose.yaml?stacksPath=/your/custom/path"--outputcompose.yaml# 修改环境变量STACKS_PATH=/your/custom/path绑定到特定网络
如果 Docker 使用了自定义网络:
services:dockge:image:louislam/dockge:latestcontainer_name:dockgeports:-"5001:5001"volumes:-/var/run/docker.sock:/var/run/docker.sock-/opt/stacks:/opt/stacksnetworks:-my-custom-networkrestart:unless-stoppednetworks:my-custom-network:external:true常见问题
Q:Dockge 和 Portainer 可以同时使用吗?
A:可以。它们可以共存,各司其职:
- Dockge:管理 compose 堆栈
- Portainer:管理单容器、网络等
Q:compose 文件会存储在哪里?
A:Dockge 使用文件结构存储,compose.yaml 保存在你指定的目录(如/opt/stacks)中,可以在文件管理器或用命令行直接操作。
Q:如何迁移已有堆栈到 Dockge?
A:
1. 停止现有堆栈 docker compose down 2. 将 compose 文件移动到堆栈目录 mv docker-compose.yml /opt/stacks/my-stack/compose.yaml 3. 在 Dockge 点击 "Scan Stacks Folder" 4. 堆栈自动识别并显示Q:支持哪些 Docker 版本?
A:需要 Docker 20+ 或 Podman。
Q:如何更新 Dockge?
A:
cd/opt/dockgedockercompose pull&&dockercompose up-d适用场景
推荐使用:
- 使用 Docker Compose 管理多容器应用
- 需要可视化编辑 compose.yaml
- 喜欢简洁界面的用户
- 家庭服务器、NAS 用户
- 小型开发团队
不推荐使用:
- 需要管理单容器、网络、卷等
- 已有成熟 CI/CD 流程
- 超大规模容器管理
总结
Dockge 用"专注 + 简洁 + 响应式"的理念,为 Docker Compose 管理提供了一个轻量级的解决方案。
核心优势回顾:
- 专注 Compose:专为 docker-compose 设计
- 文件自主:compose 文件存储本地,不锁定
- 界面美观:现代化 UI,响应迅速
- 操作简便:可视化编辑,一键部署
- 多主机管理:一界面管理多台服务器
- 轻量高效:资源占用低,启动快速
对于使用 Docker Compose 的开发者和管理员,Dockge 是一个值得尝试的高效管理工具。
本文由无边界科技技术团队分享,专注软件开发与技术解决方案。
官网:wubianj.com
© 版权归无边界科技所有,版权所有。