Docker容器内运行的Java RMI应用程序无法在Docker主机之外进行通信(即从networking中的不同服务器)
我已经通过这个链接和更多相关的问题,但没有解决我的问题。
这是我的问题的细节:
- 我有一个JAVA RMI应用程序运行在我的Docker容器中,它有一个基本的centos:7。
- 现在提到的JAVA应用程序通过
3232
java rmi端口发送一些networking数据包。 - JAVA_OPTS参数是
-Djava.rmi.server.hostname=10.122.25.72 -Djava.rmi.activation.port=3232
这里10.122.25.72
是10.122.25.72
引擎运行的物理系统的ip地址。 - 如果假设我正在使用ip
172.17.0.1:3232
从我的物理系统访问此端口与我的客户端程序比正常工作。 - 但是如果从networking中的其他系统尝试连接
10.122.25.72:3232
不是连接被拒绝。 - 我开始使用
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。 - 相同的运行命令,如果我开始
--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
但是这些都没有帮助。 - 我也试过
iptables rules
但没有任何作品。 - 注意:这个问题只能持续在3232端口,所有其他端口如DB和JMX工作正常。 我也把3232更改为3000或其他一些端口,但同样的问题仍然存在。
我的版本信息:
-
Docker版本
Docker version 1.12.3, build 6b644ec
-
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问题。
谢谢!