在新的EC2 Jenkins Slave上首次执行Docker不起作用

我在Jenkins中使用EC2 Plugin在需要的时候启动slave实例。 最近我想和Docker一起玩,所以我把它安装在我们用作奴隶的AMI上,但是在奴隶上第一次运行似乎并不奏效。

+ docker ps time="2015-04-17T15:38:20Z" level="fatal" msg="Get http:///var/run/docker.sock/v1.16/containers/json: dial unix /var/run/docker.sock: no such file or directory. Are you trying to connect to a TLS-enabled daemon without TLS?" 

任何运行后,似乎工作 – 为什么奴隶不工作的第一份工作? 我试过使用sudo,在docker build之前执行docker ps ,但是没有任何东西可以解决这个问题。

问题在于Jenkins只是在等待Slave响应SSH连接,而不是Docker正在运行。

为了防止从站变得太快,请在EC2从站插件configuration部分的“Init Script”部分进行检查。 这里是我用来对付基本AMI的一个例子。

 while [[ -z $(/sbin/service docker status | grep " is running...") && $sleep_counter -lt 300 ]]; do sleep 1; ((sleep_counter++)); echo "Waiting for docker $sleep_counter seconds - $(/sbin/service docker status)"; done 

令人惊讶的是,从站和Docker服务启动之间可能需要60秒,因此我将超时设置为5分钟。