スレーブ サーバー用の Docker を使用した Jenkins CI マスター スレーブ セットアップ

スレーブ サーバー用の Docker を使用した Jenkins CI マスター スレーブ セットアップ

そこで、2 つの Ubuntu AWS インスタンス (小さい t2.medium と大きい r3.large) をセットアップしました。t2.medium には Jenkins CI がインストールされ、r3.large には Docker エンジンがインストールされています。ここでの目的は、マスター (t2.medium) サーバーとスレーブ (r3.large) サーバーを用意することです。マスター サーバーは、ジョブの Docker コンテナを委任できます (必要に応じて Jenkins Docker コンテナを起動します)。

問題は、この件に関しては私の手に負えないということです。いろいろ調べているのですが、私がやることのほとんどがうまくいきません。

私の現在の状況は、上で述べたように、1つのインスタンスでJenkinsが正常に実行されており、もう1つのインスタンスでDockerエンジンが正常に実行されています。また、Dockerプラグインもインストールされています。ここを Jenkins にインストールし、そのページの指示に忠実に従いました。しかし、クラウドを追加して資格情報を追加すると、表示されるのは「-none-」だけです。ただし、同じ資格情報が下部に表示されます。

私が話していることのスクリーンショットは次のとおりです。 ここに画像の説明を入力してください

これの問題は、接続をテストするたびに次のエラーが発生することです。

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

どなたか助けていただければ幸いです。1 週間以上もこの作業に取り組んでいますが、まったく理解できません。

編集: やり方が間違っている場合は、意図した設定を実現する方法について教えてください。

編集2: これら 2 つのインスタンス間のすべてのポートが開かれています。

セキュリティ グループのスクリーンショットは次のとおりです。 ここに画像の説明を入力してください

編集3: これが私のDockerイメージです:

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

答え1

これは私の問題を完全に解決するものではありません。しかし、これは問題に対する実行可能な答えです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.1も入力しましたDocker 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.sockDOCKER_OPTS

関連情報