linux-测试与docker守护程序的连接

我正在编写一个脚本,该脚本将自动引导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主机:

$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

相关文章

最近一直在开发Apworks框架的案例代码,同时也在一起修复Apw...
最近每天都在空闲时间努力编写Apworks框架的案例代码WeText。...
在《Kubernetes中分布式存储Rook-Ceph部署快速演练》文章中,...
最近在项目中有涉及到Kubernetes的分布式存储部分的内容,也...
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.ne...
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.ne...