我正尝试通过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
重新启动 Docker:
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
选项,并考虑是否需要重新安装系统。 - David Maze