Назад | Перейти на главную страницу

Настройка Jenkins CI Master-Slave с докером для подчиненного сервера

Итак, я установил два экземпляра Ubuntu AWS (маленький t2.medium и большой r3.large). На t2.medium установлен Jenkins CI, а на r3.large установлен движок докеров. Намерение здесь состоит в том, чтобы иметь главный (t2.medium) сервер и подчиненный (r3.large) сервер; где главный сервер может делегировать докер-контейнеры для заданий (при необходимости раскручивайте докер-контейнеры jenkins).

Моя проблема в том, что я как бы переборщила с этим. Я занимаюсь исследованиями, но почти все, что я делаю, терпит неудачу.

Моя текущая ситуация: как я уже упоминал выше, у меня jenkins успешно работает на одном экземпляре, а движок докера успешно работает на другом. Еще у меня есть плагин для докеров, нашел Вот, установлен на 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.1 для Docker Version это клиентская версия. Вместо этого должна быть текущая версия API. 1.20.

Надеюсь, это поможет любому новичку вроде меня. :)

РЕДАКТИРОВАТЬ: файл конфигурации Docker немного изменился с тех пор, как я опубликовал это, вот как теперь выглядит мой 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