我尝试使用Docker Swarm,为此我需要使用此命令在每个节点上使用-H标志启动Docker守护程序:
docker -H tcp://0.0.0.0:2375 -d
在我的节点(Debian 8,Docker 1.6.0)上执行此操作时,该命令永远不会停止,即使它显示守护程序已完成初始化。
完整输出:
INFO[0000] +job init_networkdriver()
INFO[0000] +job serveapi(tcp://0.0.0.0:2375)
INFO[0000] Listening for HTTP on tcp (0.0.0.0:2375)
INFO[0000] /!\ DON'T BIND ON ANY IP ADDRESS WITHOUT setting -tlsverify IF YOU DON'T KNOW WHAT YOU'RE DOING /!\
INFO[0000] -job init_networkdriver() = OK (0)
WARN[0000] mountpoint for memory not found
INFO[0000] Loading containers: start.
INFO[0000] Loading containers: done.
INFO[0000] docker daemon: 1.6.0 4749651; execdriver: native-0.2; graphdriver: aufs
INFO[0000] +job acceptconnections()
INFO[0000] -job acceptconnections() = OK (0)
INFO[0000] Daemon has completed initialization
在最后一行之后没有任何反应,我也无法写另一个命令。
我还使用screen
运行命令,以便能够在第一个命令之后运行命令,但是在运行Docker命令时出现错误消息:
FATA[0000] Cannot connect to the Docker daemon. Is 'docker -d' running on this host?
此命令清楚地表明守护程序没有正确启动。我怎么能有一个Docker守护进程启动并确保Swarm代理上的远程API可通过TCP为Swarm Manager提供?
答案 0 :(得分:3)
此命令指出客户端无法与docker守护程序/引擎/服务器通信。根据日志,您的服务器正在运行。
仅使用-H tcp://0.0.0.0:2375
,如果您未导出DOCKER_HOST=127.0.0.1:2375
,则docker客户端将无法与该守护进程通信。您有两种方法可以解决这个问题:
导出DOCKER_HOST
# Exporting DOCKER_HOST when you want to talk to it
$ export DOCKER_HOST=127.0.0.1:2375
$ docker ps
或更新您的服务器选项以绑定到套接字,如此
# docker -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock -d
$ docker ps