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