0
votes

I have 2 aws ec2 instances. One instance is running Jenkins, the other is running Docker. I am trying to connect the container running on the Docker host to Jenkins as a node.

To start the container on the Docker host I ran the following:

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

In the cloud settings (under jenkins/configure)

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

Docker Hostname or IP address: 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 host security open incoming ports: 2375, 2376, 4243, 22

When I hit the "Test Connection" button, I get:

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)

On another stackoverflow post, someone recommended hitting the "Apply" button first, but that doesn't work because I get an error popup stactrace stating a java.lang.NullPointerException.

1
Change docker container network.Remember, the default network is bridge. Good luck!Abdennour TOUMI
I'm confused, the dockerd command is starting the docker daemon, not the container...virullius

1 Answers

1
votes

Try giving IP-ADDRESS-OF-EC2-DOCKER-HOST instead of 127.0.0.1 in below CMD

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

Test port is open from docker to Jenkins host using

telnet docker_host_ ip 2376