Docker MySQL 来自网关地址而不是源容器的容器传入连接
Docker MySQL Container Incoming Connection from Gateway Address Instead of Source Container
我在自己的用户定义网络上有一个基本的容器堆栈,子网为 172.21.0.0/16
。我的 MySQL 容器地址是 172.21.0.2
,PHP/Apache 容器地址是 172.21.0.3
。
在此之前,我必须允许 MySQL 允许来自 172.21.0.3
通过 PHP 的传入连接,这非常有意义。现在,连接似乎来自 172.21.0.1
,网关,这对我来说意义不大。我(从基础到中级)的理解表明,只有当流量发往其本地网络之外的地址时才应使用网关 - 但显然在这种情况下 MySQL 和 PHP/Apache 在同一网络上。
我们的两个环境已经开始出现这种情况,虽然允许来自网关地址的连接是一个简单的修复,但我在不了解发生了什么以及原因的情况下犹豫是否继续。这似乎也增加了应用程序内数据库查询的额外延迟。
通过 phpMyAdmin 登录受影响的环境会在 "Database Server" 信息窗格中显示 "User: root@172.21.0.1"。未受影响的环境显示 "root@phpmyadmin_1.test_default" (user@[container].[network]).
两种环境都使用完全相同的图像,以及相同版本的 Docker - 18.06.1-ce
。除了 Docker 的版本升级外,我使用的 docker-compose.yml
没有其他任何变化。
为什么我的环境开始这样了?我应该更喜欢来自实际来源的连接,而不是通过网关吗?我怎么才能return那样操作呢?
感谢您提供任何指导或知识。
对于遇到类似情况的任何其他人,我认为这是由 Docker 从 18.03.1-ce
升级到 18.06.1-ce
通过 Docker 自己的存储库。在此操作后执行服务器重启(目前)已恢复对堆栈网络的感知。
与我的 MySQL 容器的连接现在正确地来自 PHP/Apache 容器,而不是来自桥接网络的网关地址。引入的延迟消失了,我可以删除与网关地址关联的权限。
我在自己的用户定义网络上有一个基本的容器堆栈,子网为 172.21.0.0/16
。我的 MySQL 容器地址是 172.21.0.2
,PHP/Apache 容器地址是 172.21.0.3
。
在此之前,我必须允许 MySQL 允许来自 172.21.0.3
通过 PHP 的传入连接,这非常有意义。现在,连接似乎来自 172.21.0.1
,网关,这对我来说意义不大。我(从基础到中级)的理解表明,只有当流量发往其本地网络之外的地址时才应使用网关 - 但显然在这种情况下 MySQL 和 PHP/Apache 在同一网络上。
我们的两个环境已经开始出现这种情况,虽然允许来自网关地址的连接是一个简单的修复,但我在不了解发生了什么以及原因的情况下犹豫是否继续。这似乎也增加了应用程序内数据库查询的额外延迟。
通过 phpMyAdmin 登录受影响的环境会在 "Database Server" 信息窗格中显示 "User: root@172.21.0.1"。未受影响的环境显示 "root@phpmyadmin_1.test_default" (user@[container].[network]).
两种环境都使用完全相同的图像,以及相同版本的 Docker - 18.06.1-ce
。除了 Docker 的版本升级外,我使用的 docker-compose.yml
没有其他任何变化。
为什么我的环境开始这样了?我应该更喜欢来自实际来源的连接,而不是通过网关吗?我怎么才能return那样操作呢?
感谢您提供任何指导或知识。
对于遇到类似情况的任何其他人,我认为这是由 Docker 从 18.03.1-ce
升级到 18.06.1-ce
通过 Docker 自己的存储库。在此操作后执行服务器重启(目前)已恢复对堆栈网络的感知。
与我的 MySQL 容器的连接现在正确地来自 PHP/Apache 容器,而不是来自桥接网络的网关地址。引入的延迟消失了,我可以删除与网关地址关联的权限。