我正在编写一个脚本,该脚本将自动引导docker-compose.
但是,有时,执行eval“ $(docker-machine env default)”不会立即连接docker守护程序,并且在下一行出现(docker-compose up)时,我无法连接到Docker守护程序. docker守护程序是否在此主机上运行?
如果我使用睡眠几秒钟,问题就解决了.
是否可以通过某些系统工具测试到守护程序的连接(检查是否存在进程,是否进行了网络连接,侦听端口等)?我想从外部测试docker守护进程而不使用docker cli
最佳答案
Docker Remote API具有PING endpoint.您可以使用端点检查是否可以成功连接到Docker守护程序. docker-machine env设置环境变量DOCKER_HOST,因此您可以将DOCKER_HOST用作ping的主机.使用nc,可以按以下步骤ping主机:
原文链接:https://www.f2er.com/docker/532623.html$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