【发布时间】:2020-01-05 23:32:04
【问题描述】:
我正在尝试通过 TCP 将 docker 守护程序从客户端连接到远程主机,但出现此错误:
docker -H tcp://{{HOST_IP}}:2375 ps
Cannot connect to the Docker daemon. Is 'docker daemon' running on this host?
这可能是什么原因?寻找解决方案的正确调试方法是什么?
- 系统:Ubuntu 18.04(客户端和主机)
- ufw:为所有传入和传出启用(用于测试目的)
- 访问权限:在客户端和主机上使用 root 用户
我做了什么
在主机上:
systemctl edit docker.service
添加并保存这些行:
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://127.0.0.1:2375
重新加载守护进程:
systemctl daemon-reload
重启泊坞窗:
systemctl restart docker.service
检查它是否有效:
netstat -lntp | grep dockerd
结果:
tcp 0 0 127.0.0.1:2375 0.0.0.0:* LISTEN 3758/dockerd
用 docker 测试:
docker -H tcp://127.0.0.1:2375 ps
一切都在主机上运行。但是,当我尝试从客户端连接到远程主机时,我遇到了错误。
在客户端:
docker -H tcp://{{HOST_IP}}:2375 ps
Cannot connect to the Docker daemon. Is 'docker daemon' running on this host?
通过 ssh 连接有效:
docker -H ssh://root@{{HOST_IP}} ps
【问题讨论】:
-
因此,您已经完成了对当前主机上任何进程的不受限制的根级别访问,而您要做的是将其开放给整个网络。 (如果你成功了,你可以运行
docker -H ... -v /:/host busybox cat /host/etc/shadow来读回该主机上的加密用户密码,这是你可以做的最小破坏性的事情。)立即删除dockerd -H选项并考虑是否可能需要重新安装系统。 -
感谢您的回答。澄清一下,最终目标是与远程 docker 守护进程建立安全的 TCP 连接。这在第一次尝试时不起作用。为了调试,我使用了来自 digitalocean 的两个完全空的 ubuntu 液滴。什么是更好的调试方法?
标签: docker tcp ubuntu-18.04 docker-daemon