运维效率翻倍: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环境的完全掌控。

资源链接

暂无评论