我的情况是,我想使用本地 Portainer UI 访问不同网络上的 docker 安装。我查看了文档通过 TCP 暴露 docker API 以及如何安全的还发现这答案非常有帮助。
从那以后,我决定采用 SSH 路由,但需要更手动一些。我已将远程 docker 套接字转发到本地 tcp 端口,这样我就可以保护连接,但又不必为 TLS 而烦恼(我也尝试过,但运气不佳。可能是同样的问题)。
ssh -R 127.0.0.1:3306:/var/run/docker.sock administrator@IP
并能够证明该连接有效
docker -H 127.0.0.1:3306 info
并顺利地从远程主机获取信息。
但是,当我尝试使用新的 Endpoint 配置 Portainer 并选择 Endpoint URL 为 127.0.0.1:3306 的 Docker API 选项时,我收到一个错误:
失败:无法启动与端点的通信。
我是否需要授予 Portainer 容器额外的权限才能访问本地连接?我还尝试通过标准守护进程配置公开没有 TLS 的端点,并且机器正在监听开放端口,但 Portainer 仍然没有成功。
对于下一步该去哪里,有什么建议或指示吗?
答案1
退房后这问题是,Portainer 不支持与 Docker 守护进程的 SSH 连接。他们计划在未来支持该功能,但目前它还不是其功能列表的首要功能。
在仔细检查了我的 .json 之后配置文件并确保向 0.0.0.0 而不是 127.0.0.1 开放流量,我能够使用 Portainer 连接到它。然后仔细检查如何配置客户端/服务器验证TLS,我想这就足够了。
我不确定为什么通过 SSH 转发端口并尝试连接到本地 127.0.0.1 地址在 Portainer 上失败,这可能与 docker 网络配置方式有关。
如果有人有更好的解决方案,可以通过本地安装的 Portainer 来安全地访问远程 docker 实例,请随时回答,并且很可能会被接受。
是的,我也尝试使用边缘代理但当时我似乎也无法让它工作。可能与我的防火墙有关。