为什么拒绝连接docker的localhost


Why orientDB connection to localhost of docker is refused

我确实在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上创建了数据库。我认为东方工作得很好。然而,当我登录到我的网站。我得到错误"连接拒绝",像这样:

Socket错误#111:Connection refused

•供应商/OrientDB/OrientDB.php: 254OrientDBSocket -> __construct (' localhost ', ' 2424 ', 30)
•apps/models/DB.php:11 OrientDB->__construct('localhost','2424')

我不知道是什么原因,虽然我做了测试很好在本地当我启用server.bat文件。啊,我用的是orientdb-1.7

localhost是IP地址127.0.0.1的同义词

你的绑定是为0.0.0.0

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

因此,可能发生的情况是,您的本地服务器可以使用这些端口,而远程服务器是安全的,因此会阻止连接。

Docker运行一个虚拟机,每个容器有单独的网络接口。因此,如果您的应用服务器连接到本地主机,它将看不到orientdb.

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

我已经找到了这个问题的原因,因为im配置主机连接是错误的。它不是localhost,因为docker使用自己的内部IP。在ssh类型docker inspect orient,然后使用全局变量配置访问IP &港口。