testing连接到docker守护进程

我正在写一个脚本,将自动启动docker-compose。

但是,有时候,执行eval "$(docker-machine env default)"不会导致docker守护进程立即连接,并且当下一行出现时( docker-compose up ),我将Cannot connect to the Docker daemon. Is the docker daemon running on this host? Cannot connect to the Docker daemon. Is the docker daemon running on this host?

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

有没有办法通过一些系统工具来testing连接到守护进程(检查进程是否存在,是否build立了networking连接,监听端口等)? 我想在外部testingdocker守护进程,而不是使用docker cli

Docker Remote API有一个PING端点 。 您可以使用端点来检查是否可以成功连接到Docker守护进程。 DOCKER_HOST docker-machine env设置环境variablesDOCKER_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