JMeter - docker - java.net.connectexception

时间:2016-04-18 15:23:48

标签: java docker jmeter rmi

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

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

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

现在,我正在考虑在奴隶中使用docker,因为我可能会添加更多的奴隶。我不想每次都设置奴隶机器。所以码头似乎是一个不错的选择。

在docker容器中,一切似乎都是正确的,所有必要的端口都是打开的。

问题:

每当我使用docker容器在slave中运行jmeter-server时,如果我尝试从master连接到它,它会抛出java.net.connectexception connection refused connect <ip address>错误。

如果我从主服务器telnet到slave,它就能成功连接。

我的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 

这就是我创建容器的方式

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

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

更新:根据@arcticless暗示尝试

enter image description here

1 个答案:

答案 0 :(得分:1)

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