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

时间:2014-07-30 04:06:50

标签: php docker orientdb

我确实在docker上构建了orientDB和appserver。它们也在运行。这是docker上的列表容器:

core@localhost ~ $ docker  ps
CONTAINER ID        IMAGE                      COMMAND                CREATED
       STATUS              PORTS
NAMES
01abef0204a7        fxrialab/appserver:latest   /usr/sbin/httpd -D F   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上创建了数据库。我认为东方运作良好。但是当我登录我的网站时。我收到错误"连接被拒绝"像这样:

  

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

     

•vendors / OrientDB / OrientDB.php:254   OrientDBSocket-> __ construct(' localhost',' 2424',30)
  •apps / models / DB.php:11 OrientDB-> __ construct(' localhost',' 2424')

当我启用server.bat文件时,我不知道我在本地测试的原因是什么原因。啊,我使用的是orientdb-1.7

感谢提前!

3 个答案:

答案 0 :(得分:1)

localhost是ip地址127.0.0.1的同义词

你的绑定是0.0.0.0

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

因此,可能发生的事情是您的本地服务器使用这些端口很好,并且远程服务器是安全的,因此阻止了连接。

答案 1 :(得分:1)

Docker正在为每个容器运行一个具有单独网络接口的虚拟机。因此,如果您的appserver连接到localhost,它将不会看到orientdb。

您需要更新配置以查找链接的正确环境变量(请参阅http://docs.docker.com/userguide/dockerlinks/)或仅使用db主机。 Docker为每个链接容器注入/etc/hosts主机名。

答案 2 :(得分:0)

我找到了这个问题的原因,因为我配置HOST来连接是错误的。它不是localhost,因为docker使用自己的内部IP。在ssh类型docker inspect orient中,然后使用全局变量进行配置以访问IP&端口。