为什么orientDB连接到docker的localhost被拒绝

我在Docker上构build了orientDB和appserver。 他们也在运行。 这是docker上的列表容器:

core@localhost ~ $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 01abef0204a7 fxrialab/appserver:latest /usr/sbin/httpd -DF 30 minute s ago Up 30 minutes 0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp appserver f6d0631bb092 fxrialab/orient:latest /bin/sh -c cd /opt/o 30 minute s ago Up 30 minutes 0.0.0.0:2424->2424/tcp, 0.0.0.0:2480->2480/tcp appserver/db,orient ebc1386250b9 fxrialab/data:latest /usr/sbin/sshd -D 30 minute s ago Up 30 minutes 0.0.0.0:2200->22/tcp data 

另外我做了在orientDB上创build数据库。 我认为东方工作正常。 但是,当我login到我的网站。 我遇到错误“拒绝连接”,如下所示:

套接字错误#111:连接被拒绝

•供应商/ OrientDB / OrientDB.php:254 OrientDBSocket – > __构造('localhost','2424',30)
•apps / models / DB.php:11 OrientDB – > __ construct('localhost','2424')

我不知道什么原因,虽然我做了本地testing罚款,当我启用server.bat文件。 啊,我使用orientdb-1.7

感谢提前!

localhost是ip地址127.0.0.1的synonim

你的绑定是0.0.0.0

我不熟悉OrientDB,但我相信你面临的是端口访问问题(服务器configuration),而不是软件问题(在这种情况下,软件是OrientDB)。 大多数服务器被configuration为阻止所有端口,除非特别允许 – 出于安全原因,所以没有人可以连接到服务器的阻塞的端口。

所以,可能发生的是你的本地服务器使用这些端口是好的,远程服务器是安全的,从而阻止连接。

Docker正在为每个容器运行一个具有独立networking接口的虚拟机。 因此,如果您的应用程序服务器连接到本地主机,它不会看到orientdb。

您需要更新您的configuration以查找链接的正确环境variables(请参阅http://docs.docker.com/userguide/dockerlinks/ )或者只使用db主机。 Docker将一个主机名注入到每个链接容器的/etc/hosts中。

我发现这个问题的原因,因为IMconfigurationHOST连接是错误的。 这不是localhost因为docker使用自己的内部IP。 在sshtypes中, docker inspect orient然后使用全局variables来configuration访问IP和端口。