Docker容器内运行的Java RMI应用程序无法在Docker主机之外进行通信(即从networking中的不同服务器)

我已经通过这个链接和更多相关的问题,但没有解决我的问题。

这是我的问题的细节:

  1. 我有一个JAVA RMI应用程序运行在我的Docker容器中,它有一个基本的centos:7。
  2. 现在提到的JAVA应用程序通过3232 java rmi端口发送一些networking数据包。
  3. JAVA_OPTS参数是-Djava.rmi.server.hostname=10.122.25.72 -Djava.rmi.activation.port=3232这里10.122.25.7210.122.25.72引擎运行的物理系统的ip地址。
  4. 如果假设我正在使用ip 172.17.0.1:3232从我的物理系统访问此端口与我的客户端程序比正常工作。
  5. 但是如果从networking中的其他系统尝试连接10.122.25.72:3232不是连接被拒绝。
  6. 我开始使用docker run -it -d --name $container_name -h $host_name -p $db_port:1522 -p $jmx_port:8874 -p $app_port:3232 -v jdk1.8.0_65:/opt/jdk1.8.0_65 -v $Basedir/mount/$container_name/logs:/opt/application/modules/abc/logs -v $Basedir/mount/$container_name/packages:/opt/packages我的容器docker run -it -d --name $container_name -h $host_name -p $db_port:1522 -p $jmx_port:8874 -p $app_port:3232 -v jdk1.8.0_65:/opt/jdk1.8.0_65 -v $Basedir/mount/$container_name/logs:/opt/application/modules/abc/logs -v $Basedir/mount/$container_name/packages:/opt/packages here $ app_port:3232我正在加载一个属性文件,其中提到所有$variables。
  7. 相同的运行命令,如果我开始--net=host一切工作正常,从networking中的任何机器的docker主机。 $DOCKER_OPTS --ip=0.0.0.0我尝试了所有可能的configuration,例如$DOCKER_OPTS --ip=0.0.0.0$DOCKER_OPTS --ip=127.0.0.1$DOCKER_OPTS --ip=10.122.25.72但是这些都没有帮助。
  8. 我也试过iptables rules但没有任何作品。
  9. 注意:这个问题只能持续在3232端口,所有其他端口如DB和JMX工作正常。 我也把3232更改为3000或其他一些端口,但同样的问题仍然存在。

我的版本信息:

  1. Docker版本Docker version 1.12.3, build 6b644ec

  2. docker networks ls输出docker networks ls

     b48839085903 bridge bridge local 8ff9ed9bb4a7 docker_gwbridge bridge local efb1928de830 host host local 8fuylbofr2mb ingress overlay swarm faee5caffd21 my-multi-host-network bridge local 45ab82ea7362 none null local 

希望这个信息有助于debugging问题。

谢谢!

Interesting Posts