运维效率翻倍:Dockman搞定Docker Compose文件的可视化管理

在容器化应用日益复杂的今天,管理多个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/dockman

2. 编写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 -d

4. 验证部署

# 查看容器状态
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视图)
  • 提交者信息

回滚操作:当配置出现问题时:

  1. 在历史记录中找到稳定版本
  2. 点击「恢复到此版本」
  3. 确认操作后文件回滚
  4. 系统自动创建新的提交记录

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 psContainers模块直接查看
查看日志docker compose logs -f点击容器右侧日志按钮
启动服务docker compose up -d点击「Deploy」按钮
停止服务docker compose down点击「Stop」按钮
重启服务docker compose restart点击「Restart」按钮
编辑配置vim docker-compose.yml中间编辑区直接修改
查看资源占用docker statsStats模块可视化展示

版本升级

# 拉取最新镜像
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 $USER

2. 只读卷挂载

对敏感目录使用只读模式:

volumes:
  - /data/sensitive:/data/sensitive:ro

3. 网络隔离

将Dockman部署在内部管理网络,不直接暴露公网:

networks:
  management:
    driver: bridge
    ipam:
      config:
        - subnet: 10.10.0.0/24

4. 前置反向代理与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通知,及时获取安全更新。

与其他管理工具对比

特性DockmanPortainerRancher
直接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/PGID

Git集成不工作

# 进入容器检查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环境的完全掌控。

资源链接

已有 15 条评论

    1. 刘强 刘强

      作为运维,最怕工具引入新的抽象层,出了问题都不知道去哪排查。Dockman直接调用Docker CLI、直接读写文件的设计理念太正确了。文章里强调的"路径一致性"也很关键,这个坑我踩过,感谢提醒!

    2. Emily Wilson Emily Wilson

      The healthcheck configuration in the docker-compose example is a nice touch. Too many tutorials skip this and then people wonder why their containers show as unhealthy. The wget test with proper intervals and timeouts shows real production thinking.

    3. 张伟 张伟

      之前用命令行管理compose文件最大的痛点就是改配置要开终端、进目录、用vim编辑,然后还得记命令启停。Dockman把所有操作都图形化了,点按钮就能部署、停止、看日志。文章写得很详细,从部署到进阶功能全覆盖,收藏了!

    4. David Wang David Wang

      The SQLite browser feature mentioned for v3.0.0 is going to be huge for me. I run several apps that use SQLite and having a web-based viewer/editor integrated into the same management interface as the containers will save so much time. Great to see practical features like this.

    5. 刘芳 刘芳

      Dockman的环境变量管理设计得很巧妙。全局.env加项目级.env,还能在compose文件里直接引用,跟命令行操作习惯完全一致。文章里那个nginx示例从创建项目到部署完成就几分钟,新手也能轻松上手。准备把家里所有自托管服务都迁移过来管理。