java -jar lib / kvstore.jar ping – 使用IPAddress时的ConnectException

我在我的Windows机器上创build了Oracle Linux VM(ipAddr 192.168.10.2)。

在这个虚拟机上,我进一步创build了一个kvlite docker容器。

在Dockerfile下面是CMD发布:

CMD ["java", "-jar", "lib/kvstore.jar", "kvlite"] 

一旦kvlitedocker容器被创build,我在我的虚拟机上运行以下命令:

 $ docker run --name nosql-container -d kvlite:latest $ docker exec -it nosql-container bash 

在容器bash提示符下,我尝试使用以下命令(但是使用VM IpAddress而不是localhost)来ping我的客户端

 # java -jar lib/kvstore.jar ping -port 5000 -host 192.168.10.2 

然而,这引发了一个exception

拿起_JAVA_OPTIONS:-Djava.security.egd = file:/ dev /./ urandom

无法连接到192.168.10.2:5000处的registry无法连接到可能未运行的主机192.168.10.2,端口5000上的存储节点代理程序; 嵌套exception是:

java.rmi.ConnectException:连接拒绝主机:192.168.10.2; 嵌套exception是:

java.net.ConnectException:连接被拒绝

找不到存储拓扑结构:无法联系任何RepNode:[192.168.10.2:5000]

但是,当我使用-host作为localhost时,情况正常,

 # java -jar lib/kvstore.jar ping -port 5000 -host localhost 

要解决这个问题,我试着下面

  • 我停止了我的kvlitedocker集装箱

  • 将值hostname config.xml ($KVROOT/config.xml)更改为IpAddress

  • 重新开始我的kvlitedocker集装箱,但这并没有帮助,容器无法启动

接下来,我尝试在CMD下面为kvlite发行重新创build一个新的Docker镜像:

 CMD ["java", "-jar", "lib/kvstore.jar", "kvlite", "-host", "192.168.10.2", "-port", "5000"] 

但是在这里,当我尝试启动kvlitedocker集装箱,它并没有启动。

我甚至validation了我的/etc/hosts文件以inputIpAddress- 192.168.10.2

任何帮助提前感谢。

Docker在虚拟机上使用自己的虚拟networking。

默认networkingdocker使用的IP范围为172.17.xx,因此您启动的Container在该networking范围内拥有自己的IP。

使用以下方式login容器后,查找容器types为ifconfig的IP:

 $ docker exec -it nosql-container bash 

您可以使用容器IP从容器中寻址容器。

如果您想通过虚拟机IP访问容器外的进程,则需要在启动泊坞窗容器时显示端口(带-p )。

 $ docker run --name nosql-container -p 5000:5000 -d kvlite:latest 

您可以在这里find更多关于Docker默认networking的信息 。

另一种方法是通过指定–net = host来与您的容器共享WMnetworking。

 $ docker run --name nosql-container --net=host -d kvlite:latest