从网关地址而不是源容器的Docker MySQL容器传入连接

时间:2018-09-17 11:33:06

标签: mysql docker network-programming

我在自己的用户定义网络中拥有基本的容器堆栈,其子网为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登录到受影响的环境在“数据库服务器”信息窗格中显示“用户:root@172.21.0.1”。不受影响的环境显示“ root@phpmyadmin_1.test_default”(用户@ [容器]。[网络])。

两个环境都使用完全相同的映像和相同版本的Docker-18.06.1-ce。除了Docker的版本升级之外,关于我使用的docker-compose.yml的其他一切都没有改变。

为什么我的环境开始这样表现?我是否应该首选从实际来源而不是通过网关进行的连接?如何恢复这种操作方式?

感谢您的指导或知识。

1 个答案:

答案 0 :(得分:0)

对于其他经历过类似车辙的人,我想这是由于Docker通过Docker自己的存储库从18.03.1-ce升级到18.06.1-ce而引起的。在此操作(暂时)恢复了堆栈网络的感知之后,执行服务器重新启动。

与MySQL容器的连接现在正确地来自PHP / Apache容器,而不是来自桥接网络的网关地址。这种引入的滞后已经消失了,我能够删除与网关地址相关的特权。