我在主机A中有一个docker容器(名称CON1)正在运行,此容器是侦听端口1099的Java RMI服务器。我在主机B中还具有另一个运行Java RMI客户端的容器(名称CON2)。 。当我使用RMI端口1099从CON2 telnet CON1时,它工作正常:
import copy
a = [[1,1,1,1], [0,0,1,1], [1,1,0,0], [0,0,0,0]]
b = copy.deepcopy(a)
但是当我尝试通过Java RMI客户端连接时,连接被拒绝,并且错误消息显示CON1的其他IP地址。
$ telnet 172.30.34.74 1099
Trying 172.30.34.74...
Connected to 172.30.34.74.
Escape character is '^]'.
尽管我使用172.30.34.74在RMI客户端代码中进行查找,但错误消息显示了其他IP地址(172.18.0.2)。当我在docker容器外运行RMI服务器和RMI客户端时,它运行良好。
该如何解决这种情况?
答案 0 :(得分:0)
我实现了一个解决方案:
-Djava.rmi.server.hostname=HOST_IP
。主机HOST_IP是主机IP。host
。这样,容器将使用与主机相同的IP。