我有一种奇怪的情况让我感到困惑,而且我不确定在哪里看。我有一个docker容器,其中有一个基于nodejs的appserver运行,一个mariadb服务器在docker(普通守护进程)外运行,两者都运行在同一台机器上。 docker在主机网络命名空间中启动。 (--network=host
),表示节点应用服务器连接到localhost:3306上的mariadb服务器。 mariadb服务器配置为侦听所有接口(0.0.0.0
)。现在,当应用服务器在mariadb服务器上触发一个非常简单和简短(不是全部数据密集)的查询时 - 它会收到超时错误。但是,当它们触发相同的查询时,其他node.js应用服务器(在其他计算机上运行)不会发生此超时。我也在mysql cmd行上运行了相同的查询(连接到localhost mariadb服务器),这也有效。那么为什么mariadb服务器特意似乎拒绝来自这个特定的docker容器(在主机网络命名空间上运行)的相同查询。
我的配置是:
机器:ubuntu 16.04
docker:Docker版本1.12.6,build 78d1802
base docker image:alpine linux 3.6