슬레이브 서버용 도커를 사용한 Jenkins CI 마스터-슬레이브 설정

슬레이브 서버용 도커를 사용한 Jenkins CI 마스터-슬레이브 설정

그래서 두 개의 Ubuntu AWS 인스턴스(소형 t2.medium 및 대형 r3.large)를 설정했습니다. t2.medium에는 Jenkins CI가 설치되어 있고 r3.large에는 도커 엔진이 설치되어 있습니다. 여기서의 의도는 마스터(t2.medium) 서버와 슬레이브(r3.large) 서버를 갖는 것입니다. 마스터 서버가 작업을 위해 도커 컨테이너를 위임할 수 있는 경우(필요에 따라 jenkins 도커 컨테이너를 가동)

내 문제는 내가 이것으로 너무 머리가 아프다는 것입니다. 나는 주변을 조사해 왔지만 내가 하는 거의 모든 일이 나에게 실패했습니다.

현재 상황은 다음과 같습니다. 위에서 언급한 것처럼 한 인스턴스에서는 jenkins가 성공적으로 실행되고 있고 다른 인스턴스에서는 docker 엔진이 성공적으로 실행되고 있습니다. 나는 또한 docker 플러그인을 발견했습니다.여기, 젠킨스에 설치되었으며 해당 페이지에 있는 지침을 철저하게 따랐습니다. 그러나 클라우드를 추가하고 자격 증명을 추가하면 "-none-"만 표시됩니다. 그러나 동일한 자격 증명이 하단에 표시됩니다.

제가 말하는 내용의 스크린샷은 다음과 같습니다. 여기에 이미지 설명을 입력하세요

문제는 연결을 테스트할 때마다 다음 오류가 발생한다는 것입니다.

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

어떤 도움이라도 주시면 감사하겠습니다! 일주일 넘게 이 일을 하고 있어요! 그리고 나는 이것에 대해 머리를 감쌀 수 없습니다.

편집: 제가 잘못된 방향으로 가고 있다면 의도한 설정을 달성하는 방법을 안내해 주세요.

EDIT2: 두 인스턴스 사이에 모든 포트가 열립니다.

보안 그룹의 스크린샷은 다음과 같습니다. 여기에 이미지 설명을 입력하세요

편집 3: 내 도커 이미지는 다음과 같습니다.

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.sock일은DOCKER_OPTS

관련 정보