Amazon-Web-Services

Jenkins CI 主從設置與 docker 為從伺服器

  • July 7, 2016

所以我設置了兩個 Ubuntu AWS 實例(一個小的 t2.medium 和一個大的 r3.large)。t2.medium 上安裝了 Jenkins CI,r3.large 上安裝了 docker 引擎。這裡的目的是擁有一個 Master (t2.medium) 伺服器和一個 Slave (r3.large) 伺服器;主伺服器可以將 docker 容器委託給作業(根據需要啟動 jenkins docker 容器)。

我的問題是我對這個有點過頭了。我一直在研究,但我所做的幾乎所有事情都失敗了。

我目前的情況是:就像我上面提到的,我讓 jenkins 在一個實例上成功執行,而 docker 引擎在另一個實例上成功執行。我也有 docker 外掛,在這裡找到,安裝在 jenkins 上,我已經按照該頁面上的說明進行操作。但是,當我添加雲並添加憑據時,唯一顯示的是“-none-”;但是,相同的憑據顯示在底部。

這是我正在談論的螢幕截圖: 在此處輸入圖像描述

問題是每次我測試連接時都會出現以下錯誤:

shaded.org.apache.http.conn.HttpHostConnectException: Connect to 10.96.24.240:4243 [/10.96.24.240] failed: Connection refused.

任何幫助將非常感激!我已經做了一個多星期了!而且我只是無法解決這個問題。

編輯:如果我以錯誤的方式進行操作,請指導我如何實現預期的設置。

EDIT2:所有埠都在這兩個實例之間打開。

這是安全組的螢幕截圖: 在此處輸入圖像描述

EDIT3:這是我的泊塢窗圖像:

ubuntu@ip-10-96-24-240:~$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
ubuntu@ip-10-96-24-240:~$ docker images
REPOSITORY             TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
jenkins-1              latest              9de6ee8eeebc        3 days ago          816.3 MB
ubuntu                 latest              8251da35e7a7        2 weeks ago         188.4 MB
jenkins                latest              0c79d0a394dc        3 weeks ago         888 MB
evarga/jenkins-slave   latest              8880612971b0        8 months ago        610.8 MB

好的,所以這並不能完全滿足我的問題,但它是該shaded.org.apache.http.conn.HttpHostConnectException: Connect to 10.96.24.240:4243 [/10.96.24.240] failed: Connection refused問題的可行答案。我的問題是我沒有將以下程式碼添加到/etc/init/docker.conf

description     "Docker daemon"

start on filesystem and started lxc-net
stop on runlevel [!2345]

respawn

script
   /usr/bin/docker -H tcp://127.0.0.1:4243 -d
end script

我還提出1.8.1Docker Version哪個是客戶端版本。相反,它應該是目前的 API 版本1.20

我希望這對像我這樣的初學者有所幫助。:)

編輯: Docker conf 文件在我發布後發生了一些變化,這就是我的 docker.conf 現在的樣子:

pre-start script
       # see also https://github.com/tianon/cgroupfs-mount/blob/master/cgroupfs-mount
       if grep -v '^#' /etc/fstab | grep -q cgroup \
               || [ ! -e /proc/cgroups ] \
               || [ ! -d /sys/fs/cgroup ]; then
               exit 0
       fi
       if ! mountpoint -q /sys/fs/cgroup; then
               mount -t tmpfs -o uid=0,gid=0,mode=0755 cgroup /sys/fs/cgroup
       fi
       (
               cd /sys/fs/cgroup
               for sys in $(awk '!/^#/ { if ($4 == 1) print $1 }' /proc/cgroups); do
                       mkdir -p $sys
                       if ! mountpoint -q $sys; then
                               if ! mount -n -t cgroup -o $sys cgroup $sys; then
                                       rmdir $sys || true
                               fi
                       fi
               done
       )
end script

script
       # modify these in /etc/default/$UPSTART_JOB (/etc/default/docker)
       DOCKER=/usr/bin/$UPSTART_JOB
       DOCKER_OPTS='-H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock'
       if [ -f /etc/default/$UPSTART_JOB ]; then
               . /etc/default/$UPSTART_JOB
       fi
       exec "$DOCKER" daemon $DOCKER_OPTS
end script

# Don't emit "started" event until docker.sock is ready.
# See https://github.com/docker/docker/issues/6647
post-start script
       DOCKER_OPTS='-H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock'
       if [ -f /etc/default/$UPSTART_JOB ]; then
               . /etc/default/$UPSTART_JOB
       fi
       if ! printf "%s" "$DOCKER_OPTS" | grep -qE -e '-H|--host'; then
               while ! [ -e /var/run/docker.sock ]; do
                       initctl status $UPSTART_JOB | grep -qE "(stop|respawn)/" && exit 1
                       echo "Waiting for /var/run/docker.sock"
                       sleep 0.1
               done
               echo "/var/run/docker.sock is up"
       fi
end script

所以現在唯一需要做的就是-H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock添加DOCKER_OPTS

引用自:https://serverfault.com/questions/716335