4

我正在尝试使用 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 管理器?

4

1 回答 1

3

此命令表明客户端无法与 docker daemon/engine/server 对话。根据日志,您的服务器正在运行

只有-H tcp://0.0.0.0:2375,如果您没有 export DOCKER_HOST=127.0.0.1:2375,docker 客户端将无法与守护程序对话。你有两种方法来处理这个:

  1. 出口DOCKER_HOST

    # Exporting DOCKER_HOST when you want to talk to it
    $ export DOCKER_HOST=127.0.0.1:2375
    $ docker ps
    
  2. 或者更新您的服务器选项以也绑定到套接字,就像这样

    # docker -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock -d
    $ docker ps
    
于 2015-05-08T23:05:13.123 回答