Finsys/hawser
The agent for Dockhand
解决的问题
当 Docker 主机位于 NAT 后面、具有动态 IP 或无法从中央管理工具直接访问时,远程管理它们可能很棘手。Hawser 通过在每台 Docker 主机上充当一个小型代理来解决这个问题,让 Dockhand(一个中央管理平台)能够安全地与主机通信,无论网络设置如何。
工作原理
Hawser 是一个在 Docker 主机上运行的轻量级 Go 程序。它提供对本地 Docker API 的完全访问,并且还可以处理 Docker Compose 操作。它有两种工作模式:
- 标准模式:代理监听来自 Dockhand 的传入连接。这最适合局域网或具有静态 IP 的主机。
- 边缘模式:代理向 Dockhand 发起出站 WebSocket 连接。这适用于 VPS、NAT 网络或具有动态 IP 的主机,因为主机不需要从互联网可达。
在两种模式下,Hawser 都需要一个令牌进行身份验证(除非你绑定到 localhost)。它还支持可选的 TLS 加密来保护连接。Hawser 收集主机指标(CPU、内存、磁盘、网络)并在边缘模式下每 30 秒将它们发送到 Dockhand。它包含带有指数退避和随机抖动的自动重连,因此多个代理在重启后不会压垮服务器。
适用人群
使用 Dockhand 管理多台 Docker 主机的管理员和开发人员——无论是家庭实验室、云 VPS、NAS 还是边缘设备——需要一种可靠、安全的方式远程访问它们,尤其是当主机位于 NAT 后面或 IP 经常变化时。
亮点
- 两种模式覆盖不同的网络设置:标准(监听)和边缘(出站 WebSocket)。
- 完整的 Docker API 代理:管理容器、镜像、卷、网络、日志和交互式 exec 会话。
- 支持 Docker Compose 操作,如 up、down、pull、ps 和 logs。
- 主机指标收集(CPU、内存、磁盘、网络)并报告给 Dockhand。
- 带有指数退避和抖动的自动重连,确保连接稳健。
- 令牌身份验证和可选的 TLS 加密以确保安全。
- 内置健康检查端点以验证 Docker 连接。
- 可以部署为 systemd 服务或 Docker 容器,支持多架构(amd64 和 arm64)。
相关
- 项目
- 项目
- 项目
- 项目