Dockhand 能帮你一次性搞定本地+远程 Docker 以及自动更新、文件浏览,省去去找 Portainer + Watchtower 组合的麻烦。
在 NAS 或小型服务器上,很多人已经装了 Portainer,却发现它的免费版功能被割裂;又要用 Watchtower 才能自动拉镜像更新;甚至要额外装文件浏览器才能在容器里挑文件。于是出现了‘我到底该装哪几个工具?’的尴尬。

大多数开发者的误区是‘只要有 UI 就行’,结果 UI 里功能碎片化,切换页面、复制日志、手动更新镜像都要跑几次鼠标。实际上,一个完整的管理平台应该把容器操作、Compose 编辑、GitOps、日志、文件、跨机器统一视图都集中在同一个页面。
Dockhand 的核心本质——一站式 Docker “操作系统”。
- 多环境统一管理:本机挂载
/var/run/docker.sock,或通过 TLS、Hawser 代理直接连到远程主机。无论是家里 Synology、TrueNAS 还是云端 VPS,都能在同一个仪表盘切换。 - Git‑Driven Stack 部署:直接填入 Git 仓库地址,开启 webhook,代码一推,Dockhand 自动拉仓、执行
docker‑compose up -d,实现“提交即部署”。 - 全局环境变量 + 自动卷浏览:在 Settings 里设一次,所有 Stack 都能引用
${GLOBAL_TZ};点一下卷图标,Dockhand 会临时启动 busybox 容器挂载卷,让你在浏览器里随意查看、下载、上传文件。 - 实时日志 & 交互终端:日志面板侧边栏常驻,支持搜索、字体调节、批量下载;终端直接弹窗,无需 SSH。
- 安全 & 合规:内置 Grype/Trivy 漏洞扫描、OIDC/SSO、双因素;商业版提供 LDAP、RBAC、审计日志。免费版在 2029 年会自动转 Apache 2.0,长期自由使用。
在三台机器上跑了 Dockhand 两周的踩坑记录
- ① 挂载 Docker socket 必须使用只读模式,否则容器里
docker命令会误删宿主机镜像。docker run -v /var/run/docker.sock:/var/run/docker.sock:ro更安全。 - ② Hawser 代理首选 Standard 模式:把 NAS 放在 192.168.1.50,云端 VPS 放在外网,Standard 能让 Dockhand 主动发起 TLS 连接,避免在防火墙上打开 2376 端口。
- ③ 首次登录一定要立刻创建管理员账号并打开『Require login』。否则任何能访问 3000 端口的人都能直接操作容器,安全隐患极大。
- ④ 卷浏览第一次慢是因为要拉 busybox 镜像,等一次后会缓存,本地 ARM 主机会自动拉 arm64 版,后续毫秒级。
- ⑤ 自动更新功能要配合 Scanner 的阈值:把「高危 CVE」阈值设为 7,系统会在拉新镜像后先跑扫描,若发现高危漏洞则回滚,防止生产环境被破坏。
对标 Portainer、Yacht、Komodo:功能对比表
| 功能 | Dockhand | Portainer CE | Yacht | Komodo |
|---|---|---|---|---|
| 容器/网络/卷管理 | 完整 | 完整 | 完整 | 完整 |
| 多环境(远程 API / Hawser) | 内建 | 内建 | 不支持 | 内建(Periphery agent) |
| 可视化 Compose 编辑 | 拓扑图 + YAML | 文字编辑器 | 文字编辑器 | 文字编辑器 |
| GitOps + Webhook | 免费 | 部分 | 无 | 免费 |
| 全局环境变量 | 有 | 无 | 无 | 有 |
| 卷文件浏览 | 有(busybox) | 无 | 无 | 无 |
| 统一日志侧边栏 | 有 | 无 | 无 | 部分 |
| 漏洞扫描 | 免费 | 付费 | 无 | 付费 |
| RBAC / LDAP | 企业版 | 企业版 | 无 | 部分 |
从上表可以看到,Dockhand 把 Portainer BE 那些付费功能搬到了免费版,实现了“一站式”体验。
适合人群与不适合人群
- 适合:自建 NAS、家庭实验室、需要管理 10‑50 台容器的中小团队、想用 GitOps 但不想布置 K8s。
- 不适合:必须中文 UI 的团队(截止 2026 仍无官方中文)、需要 SaaS 商业化托管(BSL 限制)、已经在 K8s 上投入大量资源的企业。
快速上手指南(docker‑run 版)
mkdir -p /opt/dockhand/data && cd /opt/dockhand
docker run -d \
--restart unless-stopped \
--name dockhand \
-p 3424:3000 \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-v $(pwd)/data:/app/data \
fnsys/dockhand:latest
随后打开 http://你的IP:3424,依照向导创建管理员账号,点「Environments」添加本机或远程主机,即可看到所有容器实时状态。
如果想走 docker‑compose,只需要把上面的 docker run 命令写进 docker-compose.yml,保持 volumes 与 ports 配置不变。
进阶玩儿法
想让所有 Stack 共享相同的时区、代理地址?在 Settings → Global Env 里统一设置,然后在 compose 中使用 ${GLOBAL_TZ},一次改动全体生效。
对安全要求更高的团队可以在 Settings → Authentication → SSO / OIDC 接入 Authelia、Keycloak 等,配合 2FA,实现企业级单点登录。
结语
如果你已经厌倦了在多个面板里切换、手动拉镜像、再去 SSH 浏览卷,那就把 Dockhand 拉进来试一试。把你的痛点、踩过的坑或者成功案例留言在下方,让大家一起讨论、互相成长吧!
评论 (0)