JMeter – docker – java.net.connectexception

我正在尝试在AWS EC2实例中使用JMeter进行分布式负载testing。

我有1个主人和2个奴隶。 所有的都是Ubuntu的实例。 他们都安装了java和jmeter。

我能够成功地执行在奴隶没有问题的testing。 (当我不使用docker)(JMeter使用RMI来控制奴隶)

现在,我正在考虑在奴隶中使用docker工人,因为我可能会添加更多的奴隶。 我不想每次都设置从机。 因此,docker似乎是一个不错的select。

在docker集装箱,一切似乎都是正确的,所有必要的港口都是开放的。

问题:

每当我使用docker容器在从站运行Jmeter服务器,如果我尝试从主连接到它,它会抛出java.net.connectexception connection refused connect <ip address>错误。

如果我从主机telnet到从机,它能够成功连接。

我的dockerfile:

 FROM ubuntu RUN apt-get update RUN apt-get -y install wget RUN apt-get -y install default-jre RUN mkdir /jmeter RUN cd /jmeter/ ; wget http://www.us.apache.org/dist//jmeter/binaries/apache-jmeter-2.13.tgz ; tar -xzf apache-jmeter-2.13.tgz ; rm apache-jmeter-2.13.tgz ENV JMETER_HOME /jmeter/apache-jmeter-2.13/ ENV PATH $JMETER_HOME/bin:$PATH EXPOSE 1099 7000 50000 ENTRYPOINT $JMETER_HOME/bin/jmeter-server -Djava.rmi.server.hostname=$LOCALIP 

这是我如何创build一个容器

 sudo docker run -dit -e LOCALIP='10.11.12.13' -p 7000:7000 -p 1099:1099 -p 50000:50000 "mydockerimg" /bin/bash 

我不明白这里发生了什么! 我应该如何解决这个问题?


更新:试图根据@arcticless的build议

在这里输入图像说明

尝试使用标志–net = host运行你的容器,而不暴露任何端口。 它应该工作。 sudo docker run --net=host -dit -e LOCALIP='your_ip' "mydockerimg" /bin/bash