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

时间:2015-04-20 13:46:15

标签: jenkins amazon-ec2 docker jenkins-plugins ec2-ami

我正在使用Jenkins中的EC2插件来在需要时启动从属实例。最近我想和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 ,但似乎没有解决问题。

1 个答案:

答案 0 :(得分:2)

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

防止奴隶成为"在线"太快了,检查一下" Init Script" EC2 Slave Plugin配置部分中的部分。这是我用来对抗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分钟。