测试与docker守护程序的连接

时间:2016-03-03 06:30:03

标签: linux docker

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

但是,有时,执行docker-compose up并不会导致docker守护程序立即连接,当下一行(Cannot connect to the Docker daemon. Is the docker daemon running on this host?)时,我得到sleep

如果我使用docker几秒钟,问题就会解决。

有没有办法通过一些系统工具测试连接到守护进程(检查是否存在进程,是否建立了网络连接,是否收听了端口等)?我想在外部测试docker守护进程而不是使用function dragMarkerService(resolveAddressService){ this.placeMarker = function(location, idValue, map){ var myMarker = new google.maps.Marker({ position: new google.maps.LatLng(location.latitude, location.longitude), draggable: true }); google.maps.event.addListener(myMarker, 'dragend', function (evt) { location.latitude = evt.latLng.lat(); location.longitude = evt.latLng.lng(); resolveAddressService.resolveAddress(location, idValue) }); google.maps.event.addListener(myMarker, 'dragstart', function (evt) { angular.element(idValue).val() = 'Currently dragging marker...'; }); map.setCenter(myMarker.position); myMarker.setMap(map); } }; cli

1 个答案:

答案 0 :(得分:3)

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