我正在编写一个将自动启动 docker-compose 的脚本。
然而,有时,做eval "$(docker-machine env default)"
不会导致 docker 守护进程立即连接,并且当下一行到来时(docker-compose up
) I get Cannot connect to the Docker daemon. Is the docker daemon running on this host?
如果我使用sleep
几秒钟后问题就解决了。
有没有办法通过某些系统工具测试与守护进程的连接(检查进程是否存在,是否建立网络连接,侦听端口等)?我想在外部测试 docker 守护进程而不是使用docker
cli
The Docker 远程 API https://docs.docker.com/engine/reference/api/docker_remote_api_v1.22/ has a PING 端点 https://docs.docker.com/engine/reference/api/docker_remote_api_v1.22/#ping-the-docker-server。您可以使用该端点检查是否可以成功连接到 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)