将在单独的ec2主机上运行的docker节点连接到Jenkins

时间:2017-12-08 16:25:15

标签: amazon-web-services docker jenkins amazon-ec2

我有2个aws ec2实例。一个实例运行Jenkins,另一个运行Docker。我试图将Docker主机上运行的容器连接到Jenkins作为节点。

要在Docker主机上启动容器,我运行了以下命令:

sudo dockerd -H tcp://127.0.0.1:2376 -H unix:///var/run/docker.sock

在云设置中(在jenkins / configure下)

Docker主机URI:     tcp://IP-ADDRESS-OF-EC2-DOCKER-HOST:2376

Docker主机名或IP地址:IP-ADDRESS-OF-EC2-DOCKER-HOST

Dockerfile:

FROM ubuntu:16.04
RUN apt-get update
RUN apt-get install openjdk-8-jdk -y
RUN mkdir -p /home/jenkins
EXPOSE 22

ec2 Docker主机安全性打开传入端口:2375,2376,4243,22

当我点击"测试连接"按钮,我明白了:

Connection refused: /IP-ADDRESS-OF-EC2-DOCKER-HOST:2376
java.net.ConnectException: Connection refused
Caused: io.netty.channel.AbstractChannel$AnnotatedConnectException: 
Connection refused: /IP-ADDRESS-OF-EC2-DOCKER-HOST:2376
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
at 
sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)
at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:352)
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:340)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:632)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:579)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:496)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:458)
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)
at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:138)
at java.lang.Thread.run(Thread.java:748)

在另一个stackoverflow帖子上,有人建议点击"应用"按钮第一,但这不起作用,因为我得到一个错误弹出stactrace声明java.lang.NullPointerException。

1 个答案:

答案 0 :(得分:1)

尝试在以下CMD中提供IP-ADDRESS-OF-EC2-DOCKER-HOST而不是127.0.0.1

sudo dockerd -H tcp://127.0.0.1:2376 -H unix:///var/run/docker.sock

使用

从Docker打开测试端口到Jenkins主机

telnet docker_host_ ip 2376