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

时间:2016-10-21 11:56:54

标签: docker oracle-nosql nosql

我在Windows机器上创建了一个Oracle Linux VM(ipAddr 192.168.10.2)。

在这个VM上,我进一步创建了一个kvlite docker容器。

在Dockerfile中,以下是CMD发布:

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

创建了kvlite docker容器后,我在我的VM上运行了以下命令:

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

$ docker exec -it nosql-container bash

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

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

然而,这会引发异常

  

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

     

无法连接到192.168.10.2:5000的注册表无法连接到主机192.168.10.2,端口5000的存储节点代理程序,   可能没有运行;嵌套异常是:

     

java.rmi.ConnectException:Connection拒绝主机:192.168.10.2;嵌套异常是:

     

java.net.ConnectException:拒绝连接

     

无法找到商店拓扑:无法联系任何RepNode:[192.168.10.2:5000]

但是,当我使用-host作为localhost而不是

时,情况正常
# java -jar lib/kvstore.jar ping -port 5000 -host localhost

要解决此问题,我尝试了以下操作:

  • 我停止了我的kvlite docker容器

  • 将值config.xml ($KVROOT/config.xml)的{​​{1}}更改为hostname

  • 重新启动我的kvlite docker容器,但这没有帮助,容器无法启动

接下来,我尝试为CMD下面的kvlite重新创建一个新的docker镜像:

IpAddress

但是当我尝试启动kvlite docker容器时,它也没有启动。

我甚至验证了我的CMD ["java", "-jar", "lib/kvstore.jar", "kvlite", "-host", "192.168.10.2", "-port", "5000"] 文件以输入IpAddress - /etc/hosts

提前获得任何帮助。

1 个答案:

答案 0 :(得分:0)

Docker在VM上使用自己的虚拟网络。

默认网络终结器使用的IP范围为172.17.x.x,因此您启动的Container在该网络范围内拥有自己的IP。

在使用

登录Container后查找Container类型ifconfig的IP
$ docker exec -it nosql-container bash

您可以使用Container IP从Container内部处理Container。

如果您想通过VM的IP从容器外部到达进程,则需要在启动docker容器时公开端口(使用 -p )。

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

您可以找到有关Docker默认网络here的更多信息。

另一种方法是通过指定 - net = host 与您的容器共享WM网络。

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