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

First execution of Docker on a new EC2 Jenkins Slave does not work

我在 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?" 

在此之后的任何 运行s 似乎都有效 - 为什么从属不能在第一份工作中工作?我试过使用 sudo,在 docker build 之前执行 docker ps 但似乎没有任何解决办法问题。

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

为防止从站过快地变为 "online",请检查 EC2 从站插件配置部分的 "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 分钟。