在容器化应用日益复杂的今天,管理多个Docker Compose项目成为运维人员的一大挑战。频繁的配置文件修改、繁琐的服务启停操作、分散的日志查看,都消耗着宝贵的时间。本文将介绍一款专为家庭实验室和开发环境设计的轻量级工具——Dockman,通过可视化管理让Docker Compose运维效率翻倍。
Dockman简介
什么是Dockman?
Dockman是一款专为家庭实验室(Homelab)环境和开发场景设计的轻量级Docker Compose管理工具。它的核心理念是提供对Docker配置文件的直接、无抽象的完全访问权限,同时通过直观的Web界面简化服务的管理与监控。
与其他复杂的Docker管理工具不同,Dockman专注于简洁性和实用性——不引入额外抽象层,直接调用Docker CLI,让你能够直接编辑配置文件而不是通过繁重的GUI界面。
核心功能
| 功能分类 | 具体能力 | 价值体现 |
|---|---|---|
| 文件管理 | 内置代码编辑器,直接修改docker-compose.yml | 完全掌控配置,所见即所得 |
| 项目管理 | 多项目集中管理,轻松切换组织 | 统一视图管理所有Compose项目 |
| 状态监控 | 实时显示容器状态、资源占用和日志 | 快速排查问题,掌握运行状况 |
| 一键操作 | 启动、停止、重启、删除容器的图形化按钮 | 简化日常运维,避免命令行记忆 |
| 版本控制 | 内置Git集成,自动跟踪配置文件变更 | 配置可追溯,一键回滚稳定版本 |
| 多主机管理 | 从单一界面管理多台服务器 | 统一管控分布式环境 |
适用场景
- 家庭实验室(Homelab)爱好者:管理自托管的各类服务,如Nextcloud、Traefik、媒体服务器等
- 开发测试环境:快速部署和调整多服务应用架构
- 个人开发者:本地开发环境的标准化管理
- 小团队协作:统一配置标准,减少环境不一致问题
部署准备
环境要求
在开始之前,请确保您的服务器满足以下条件:
- 操作系统:Ubuntu 20.04 / 22.04 / 24.04(本文以Ubuntu 24.04.2 LTS为例)
- Docker Engine:版本25及以上(Dockman v3.0.0+要求)
- Docker Compose:版本2.0及以上
- 端口要求:8866端口未被占用(可自定义)
检查Docker环境
# 检查Docker服务状态
sudo systemctl status docker
# 检查Docker版本(需≥25)
docker -v
# 检查Docker Compose版本
docker compose version部署方式
Dockman提供两种部署方式,根据使用场景选择。
方式一:快速体验(临时评估)
适合初次尝试或临时测试,容器停止后所有数据会丢失:
docker run --rm -p 8866:8866 -v /var/run/docker.sock:/var/run/docker.sock ghcr.io/ra341/dockman:latest访问 http://服务器IP:8866 即可开始使用。
方式二:生产环境部署(持久化运行)
1. 创建部署目录
# 创建堆栈目录和配置目录
mkdir -p /data/dockman/{stacks,config}
cd /data/dockman
# 设置目录权限
chmod -R 755 /data/dockman2. 编写docker-compose.yml文件
version: '3.8'
services:
dockman:
image: ghcr.io/ra341/dockman:latest
container_name: dockman
restart: unless-stopped
ports:
- "8866:8866"
environment:
- DOCKMAN_COMPOSE_ROOT=/data/dockman/stacks
- TZ=Asia/Shanghai
- PUID=1000
- PGID=1000
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /data/dockman/stacks:/data/dockman/stacks
- /data/dockman/config:/config
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:8866/api/health"]
interval: 30s
timeout: 10s
retries: 3⚠️ 关键路径一致性要求:环境变量DOCKMAN_COMPOSE_ROOT、主机挂载路径和容器内路径必须完全相同,否则Dockman无法正确定位Compose文件。3. 启动容器
docker compose up -d4. 验证部署
# 查看容器状态
docker compose ps
# 查看日志
docker compose logs -f确保容器状态为Up,日志中无错误信息。
访问与界面导览
1. 访问Dockman首页
浏览器打开:http://服务器IP:8866
如果无法访问,请检查:
- 防火墙是否放行8866端口:
sudo ufw allow 8866/tcp - 云服务器安全组规则
2. 界面布局
Dockman采用三栏式布局,直观高效:
| 区域 | 功能 | 操作说明 |
|---|---|---|
| 左侧导航栏 | 显示所有Compose项目 | 文件夹形式可展开,根目录下文件直接列出;支持新建/删除项目 |
| 中间编辑区 | 文件内容编辑器 | 语法高亮显示YAML格式;实时保存;多标签页同时编辑 |
| 右侧控制面板 | 容器状态和操作 | 显示容器运行状态;提供启动、停止、重启快捷按钮;实时日志查看 |
3. 查看容器列表
在Containers模块,可以看到宿主机上所有容器的运行状态、资源占用等信息。
实战:创建第一个项目
场景:部署Nginx静态服务
通过一个完整的示例掌握Dockman的使用流程。
步骤1:创建项目文件夹
在Dockman界面左侧点击「新建项目」,输入项目名称nginx-demo。系统会自动在/data/dockman/stacks目录下创建对应文件夹。
步骤2:编写compose.yaml
在中间编辑器中输入以下内容:
services:
nginx:
image: nginx:alpine
container_name: nginx-demo
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html:ro
environment:
- TZ=Asia/Shanghai
restart: unless-stopped步骤3:创建静态文件
点击「新建文件」按钮,创建html/index.html文件:
<!DOCTYPE html>
<html>
<head>
<title>Dockman Demo</title>
<style>
body { font-family: Arial; text-align: center; padding: 50px; }
h1 { color: #4CAF50; }
</style>
</head>
<body>
<h1>欢迎使用 Dockman!</h1>
<p>这是通过 Dockman 可视化管理部署的 Nginx 服务</p>
<p>当前时间:<span id="time"></span></p>
<script>
document.getElementById('time').textContent = new Date().toLocaleString('zh-CN');
</script>
</body>
</html>步骤4:部署服务
点击右侧的「Deploy」按钮,Dockman会自动执行docker compose up -d命令。你可以在日志窗口看到部署过程的实时输出。
步骤5:验证部署
浏览器访问 http://服务器IP:8080,如果看到创建的页面,说明部署成功。
进阶功能详解
1. 环境变量管理
Dockman支持多层级环境变量配置:
全局环境变量(在stacks根目录创建.env):
# 全局配置,所有项目可访问
TIMEZONE=Asia/Shanghai
NETWORK_NAME=homelab-network
DEFAULT_RESTART_POLICY=unless-stopped项目级环境变量(在项目目录下创建.env):
# 项目特定配置
APP_NAME=nginx-demo
APP_VERSION=1.0.0在Compose文件中使用:
services:
nginx:
image: nginx:${APP_VERSION:-alpine}
container_name: ${APP_NAME}
environment:
- TZ=${TIMEZONE}
restart: ${DEFAULT_RESTART_POLICY}
networks:
- ${NETWORK_NAME:-default}2. 内置Git版本控制
Dockman最大的亮点之一就是内置的Git支持:
自动提交:每次保存文件后,系统自动创建Git提交记录,格式为Update [文件名] - [时间戳]
查看变更历史:点击文件名旁的「历史」按钮,可以看到:
- 提交时间和ID
- 变更的具体内容(diff视图)
- 提交者信息
回滚操作:当配置出现问题时:
- 在历史记录中找到稳定版本
- 点击「恢复到此版本」
- 确认操作后文件回滚
- 系统自动创建新的提交记录
3. 多主机管理
从v1.1版本开始,Dockman支持多主机管理。
配置SSH密钥认证:
# 在Dockman宿主机上生成密钥对
ssh-keygen -t rsa -b 4096 -f ~/.ssh/dockman_id_rsa
# 将公钥复制到目标服务器
ssh-copy-id -i ~/.ssh/dockman_id_rsa.pub user@remote-server创建hosts.yaml配置(挂载到/config目录):
default_host: production
enable_local_docker: true
machines:
production:
enable: true
host: prod.example.com
port: 22
user: docker
use_public_key_auth: true
staging:
enable: true
host: 192.168.1.100
port: 22
user: deploy
use_public_key_auth: true主机切换:界面顶部的主机选择器可以无缝切换,切换时:
- 当前工作自动保存并提交到对应Git分支
- 系统切换到目标主机分支
- 建立SSH连接并同步远程状态
4. SQLite浏览器
从v3.0.0开始,Dockman内置SQLite浏览器,可以直接在Web界面查看和编辑SQLite数据库文件。
5. 调试器功能
支持在无Shell容器(如distroless、rootless镜像)中执行调试命令,排查问题更加方便。
日常运维指南
常用操作命令
| 操作 | 命令行方式 | Dockman界面方式 |
|---|---|---|
| 查看容器列表 | docker compose ps | Containers模块直接查看 |
| 查看日志 | docker compose logs -f | 点击容器右侧日志按钮 |
| 启动服务 | docker compose up -d | 点击「Deploy」按钮 |
| 停止服务 | docker compose down | 点击「Stop」按钮 |
| 重启服务 | docker compose restart | 点击「Restart」按钮 |
| 编辑配置 | vim docker-compose.yml | 中间编辑区直接修改 |
| 查看资源占用 | docker stats | Stats模块可视化展示 |
版本升级
# 拉取最新镜像
docker compose pull
# 重新创建容器(数据不会丢失)
docker compose up -d --force-recreate数据备份
# 备份堆栈目录和配置
tar -czf dockman-backup-$(date +%Y%m%d).tar.gz /data/dockman/stacks /data/dockman/config
# 设置定时备份(crontab)
0 2 * * * tar -czf /backup/dockman/dockman-$(date +\%Y\%m\%d).tar.gz -C /data dockman完全移除
# 停止并删除容器
docker compose down
# 停止并删除容器及数据卷(谨慎操作)
docker compose down -v安全配置建议
1. Docker Socket权限管理
Dockman需要访问Docker socket,这授予了对主机系统的显著控制权,必须严格管理:
# 限制socket文件权限
sudo chmod 660 /var/run/docker.sock
# 创建专用docker组并将用户加入
sudo groupadd docker
sudo usermod -aG docker $USER2. 只读卷挂载
对敏感目录使用只读模式:
volumes:
- /data/sensitive:/data/sensitive:ro3. 网络隔离
将Dockman部署在内部管理网络,不直接暴露公网:
networks:
management:
driver: bridge
ipam:
config:
- subnet: 10.10.0.0/244. 前置反向代理与HTTPS
使用Nginx反向代理配置SSL证书:
server {
listen 443 ssl;
server_name dockman.yourdomain.com;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/key.pem;
location / {
proxy_pass http://127.0.0.1:8866;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}5. 定期更新
订阅GitHub releases通知,及时获取安全更新。
与其他管理工具对比
| 特性 | Dockman | Portainer | Rancher |
|---|---|---|---|
| 直接Compose访问 | ✅ 完全可见性 | ⚠️ 部分支持 | ❌ 抽象化 |
| 配置持久性 | 基于文件 | 基于数据库 | 基于数据库 |
| 学习曲线 | 低(针对Compose用户) | 中等 | 高 |
| 定制深度 | 无限制 | 有限 | 中等 |
| 资源占用 | 极小(<50MB) | 中等 | 较大 |
| Git集成 | ✅ 内置 | ❌ 需额外配置 | ⚠️ 部分支持 |
| 多主机管理 | ✅ 支持 | ✅ 支持 | ✅ 支持 |
Dockman的独特价值在于:在添加可视化功能的同时,保留了直接Docker Compose管理的简单性和透明度。
常见问题排查
容器无法启动
# 查看详细错误
docker compose logs
# 检查端口占用
sudo netstat -tlnp | grep 8866路径一致性错误
如果Dockman无法找到Compose文件,检查三处路径是否完全一致:
- 环境变量
DOCKMAN_COMPOSE_ROOT - 主机挂载路径(
/data/dockman/stacks) - 容器内路径(
/data/dockman/stacks)
权限问题
# 检查目录权限
ls -la /data/dockman
# 重新设置权限
chmod -R 755 /data/dockman
chown -R 1000:1000 /data/dockman # 匹配容器内PUID/PGIDGit集成不工作
# 进入容器检查Git配置
docker exec -it dockman sh
git --version
git config --list多主机连接失败
# 测试SSH连接
ssh -i ~/.ssh/dockman_id_rsa user@remote-server
# 检查hosts.yaml格式
cat /data/dockman/config/hosts.yaml总结
通过Dockman实现Docker Compose的可视化管理,我们获得了:
- 运维效率翻倍:告别频繁的命令行操作,一键完成服务启停
- 配置可视化:直观的界面管理所有Compose项目
- 版本控制内置:Git集成让配置变更可追溯、可回滚
- 多主机统一管理:从单一界面管控分布式环境
- 轻量高效:资源占用极小,不引入额外复杂度
Dockman尤其适合家庭实验室爱好者、开发测试环境以及追求简洁高效的运维场景。它通过“无过滤、无抽象”的设计理念,让技术人员重新获得对Docker环境的完全掌控。
资源链接
- GitHub仓库:https://github.com/RA341/dockman
- 官方文档:https://dockman.radn.dev/docs
- 镜像地址:
ghcr.io/ra341/dockman:latest
暂无评论