2016-03-03 114 views
1

我正在编写一个将自动启动docker-compose的脚本。测试连接到docker守护进程

但是,有时,在做eval "$(docker-machine env default)"不会导致码头工人守护进程将立刻连接并在下一行来到(docker-compose up)我得到Cannot connect to the Docker daemon. Is the docker daemon running on this host?

如果我使用sleep几秒钟的问题解决了。

有没有办法通过某些系统工具来测试连接到守护进程(检查进程是否存在,是否建立了网络连接,监听端口等)?我想测试码头守护进程外部并且不使用docker cli

回答

3

Docker Remote APIPING endpoint。您可以使用该端点来检查您是否可以成功连接到Docker守护程序。 docker-machine env设置环境变量DOCKER_HOST,因此您可以使用DOCKER_HOST作为主机进行ping。使用nc,您可以ping主机如下:

$ eval "$(docker-machine env default)" 
$ echo -e "GET /_ping HTTP/1.1\r\n" | nc $DOCKER_HOST 
HTTP/1.1 200 OK 
Server: Docker/1.10.2 (linux) 
Date: Thu, 03 Mar 2016 07:05:58 GMT 
Content-Length: 2 
Content-Type: text/plain; charset=utf-8 

OK 

您需要检查返回值。如果它返回'OK',则连接成功。一个简单的检查可能看起来如下(这可能需要更多细化):

#!/bin/bash 
if [ "$(echo -e "GET /_ping HTTP/1.1\r\n" | nc $DOCKER_HOST | tail -n 1)" == 'OK' ] ; then 
    echo "You are connected" 
fi 
相关问题