因此,我设置了两个 Ubuntu AWS 实例(一个小型 t2.medium 和一个大型 r3.large)。t2.medium 上安装了 Jenkins CI,r3.large 上安装了 docker 引擎。这里的目的是要有一个主服务器(t2.medium)和一个从服务器(r3.large);其中主服务器可以委派 docker 容器来执行作业(根据需要启动 jenkins docker 容器)。
我的问题是,我对这个问题有点不知所措。我一直在研究,但几乎我做的所有事情都失败了。
我目前的情况是:正如我上面提到的,我在一个实例上成功运行了 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:这两个实例之间的所有端口都已打开。
EDIT3:这是我的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.sock
添加DOCKER_OPTS