Py学习  »  docker

终于有人把 Docker 管理这件事做简单了。

开源日记 • 4 周前 • 104 次点击  


5个月的时间,Star 数干到了 4400。

Docker 管理工具这个圈子,又冒出来一个好东西——Dockhand

我瞅了一眼它主要就干了一件事:把Docker容器的管理工作,做得更简单一些。

管理只是它的一部分。

平时配 Compose 项目,可以直接图形化编辑,不用一直对着 YAML 文件改。

服务器多了,它也能帮你统一管理远程机器。

安全和运维这块同样没落下——镜像漏洞能扫描,更新支持自动化,真出问题还能随时回滚。

连认证都省得你再额外折腾,OIDC 和 SSO 已经内置,还完全免费。

像 Watchtower,Dozzle,Diun这一堆工具,以后就不用挨个去装了,一个界面就能全搞定。

它的定位,是一个比较现代化的Docker管理平台,算得上是 Portainer 的一个挺有分量的对手。

Dashboard
Dashboard

为什么这个东西值得你去关注一下?

它把Portainer那边需要付费才能用的功能,直接拿出来免费提供了。

这一点,确实是最让人没想到的地方。

到2025年底的时候,Portainer把 OIDC/SSO 和 RBAC,都锁到付费版本里面去了。

社区里头一下子就炸了——好多人用 Portainer,本来就是奔着自托管去的,结果现在想搞一个单点登录,每年还得掏出去几十欧元。

Dockhand走的路子正好反过来:OIDC/SSO它直接免费开放出来用,只是把RBAC和LDAP/AD放在了企业版里。

要是你想给自托管环境加上单点登录的话,用Dockhand是不用花钱的。

Authentication Settings
Authentication Settings

除了在认证策略上比较友好之外,它还把Docker管理的一整条链都给串起来了。

01 容器生命周期的管理。

启动,停止,重启,删除这些操作,在界面里头全都可以一键点下去,批量处理也是支持的。

想看日志的话,直接点进去就能看到实时流,ANSI颜色的渲染也没什么毛病,这样一来,Dozzle就不用单独再去开了。

要是想进到容器里面做些调试,直接在Web端打开一个终端就行,SSH完全用不着。

Containers View
Containers View

02 Compose栈的可视化编辑。

它里头有一个视觉化的编辑器,YAML要是写错了,会直接给你标出来,不会像有的工具那样,只是丢回来一句“部署失败”就没下文了。

更要紧的一点是,它支持直接从Git仓库里面把栈拉下来,把webhook配置好以后,每一次push操作都能自动去触发部署。

这个地方,我本人是比较喜欢的。

以前要是想搞那种GitOps式的部署,要么得自己去写一堆脚本,要么就得拖一套ArgoCD那样比较重的工具过来。

Dockhand是把这种能力收到了同一个界面里头,基本上不需要你再额外去折腾什么东西。

Stacks Editor
Stacks Editor

03 镜像漏洞的扫描。

它里面是内置了Grype和Trivy这两个扫描器的。

我想起来以前为了合规,要做镜像的漏洞扫描。

找了一些第三方工具,折腾半天装上去。

现在不用了。

只要点一下,结果立马就出来了,而且还可以按严重程度去做过滤。

扫描完之后的结果,会按照镜像的SHA256值去做缓存,不会每次都从头到尾重新跑一遍。

Images View
Images View

04 自动更新,而且是带着回滚保护的那种。

它支持给容器去配置定时的更新任务,不是拉一个新镜像就算完事的粗放做法。

在更新之前,它可以先帮你扫一遍漏洞。要是新镜像的漏洞比旧的那个还要多,它能够自动把这次更新操作给挡住。

万一更新过程中出了什么状况,回滚保护机制还在那里兜着底。

现在估计还有很有人在用 Watchtower 做自动更新,但是没有漏洞检查的功能,回滚也是没有的。

估计作者也看到这个痛点,就把这一套全部做到 Dockhand。

Schedules
Schedules

05 通过 Hawser Agent 进行远程管理。

它里头有一个叫做 Hawser 的Agent。

这个设计确实得说挺聪明的:

Agent只是往外去发起 WebSocket 连接,不需要你在防火墙上单独去开什么端口,也不用把Docker socket暴露出去。

对于那些躲在NAT后面,IP地址还是动态变化的服务器来讲,这种方式比直接把TCP端口展露出去,要安全得多。

Networks
Networks

核心功能说得差不多了,再来聊聊那些让你用起来感觉比较顺手的小细节。

界面的响应速度特别快。

它是用 Svelte 5 写的,比起那些还停留在老框架上的工具,感觉要清爽不少。

有亮色和暗色两种主题。

Dashboard Light
Dashboard Light
Dashboard Dark
Dashboard Dark

另外仪表盘上那些磁贴的大小,你也可以自己去配置,想看哪个环境的容器状态,直接拖一下就行了。

** 采用了Wolfi硬化镜像。**

从零开始构建它自己的 OS 层,每一个包都在 Dockerfile 里头显式写明。

做到了零遥测,不会背着你偷偷发数据出去。

Security Settings
Security Settings

通知框架的集成。

支持SMTP邮件方式,同时也集成了Apprise,像Discord,Slack,Telegram,ntfy,Gotify,Pushover等等,总共50多个服务都能接进来。

容器启动,停止,更新失败,发现新漏洞这些事件,全都可以自动把通知给你推送出去。

Activity Log
Activity Log

聊到这个地方,你极有可能会想:部署起来到底麻不麻烦?

部署的话,其实是相当简单的

一条命令就可以把它跑起来:

docker run -d --name dockhand --restart unless-stopped \
  -p 3000:3000 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v dockhand_data:/app/data \
  fnsys/dockhand:latest

在浏览器里面访问localhost:3000,就可以用了。

部署的时候有个小坑还是得提一嘴:它默认是不会以root身份去运行的,Docker socket那边的权限可能要去调一下。

最省事的法子,是加上--user 0:0直接用root去跑,再不然通过--group-add把Docker组的GID加进去也行。

当然了,Dockhand也不是说就完美无缺了。

它目前只支持Docker和Compose,Kubernetes还有Swarm这边还管不了,这方面比起来,Portainer确实要更全面一些。

另外呢,RBAC这一类企业级功能,也是要付费的,不过门槛要比Portainer那边低上不少——毕竟OIDC/SSO是免费提供的,只有RBAC才需要花钱。

再来说一下许可证方面的事情。

目前用的是BSL 1.1,个人使用,内部商用,非营利性质还有教育用途,全都是免费的,但是你不能把它包装成一个SaaS服务拿去卖钱。

到了2029年1月1号以后,它会自动转成Apache 2.0,到那个时候就是完全开源的了。

但话说回来,如果你只是想把Docker管好,不想去折腾K8s那一套复杂的东西,Dockhand是够用的了。

Terminal & Logs
Terminal & Logs

写在最后

我之前搞运维的时候, 经常用 Docker。

刚开始学的时候基本全是用命令来管理。

后来用的熟练之后,发现 Portainer 免费还带界面。

我就顺手换了过去。

用了好几年,说心里话还是挺满意的。

不过最近发现了 Dockhand。

上手试了一下,发现更好用了。

真是一代更比一代强。

经常跟 Docker 打交道的朋友,不妨试着玩一玩。

评论区说说你是怎么玩 Docker 的。

项目基于 BSL 1.1 协议开放的,感兴趣的同学,可以去 GitHub 仓库翻翻源码和文档。

开源地址:https://github.com/Finsys/dockhand

既然都看到这儿了,欢迎随手帮忙点赞,在看,转发,也欢迎给我点个星标⭐,这样就能收到最新的文章了,咱们下期见!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/196915