我在自己的用户定义网络上有一个容器的基本堆栈,子网为 172.21.0.0/16
. 我的mysql容器的地址是 172.21.0.2
php/apache容器的地址是 172.21.0.3
.
在此之前,我必须允许mysql允许通过php从 172.21.0.3
,这很有道理。现在,似乎这些联系来自 172.21.0.1
对我来说没什么意义。我(从基础到中级)的理解是,网关应该只在通信量到达其本地网络之外的地址时使用——但很明显,在这种情况下,mysql和php/apache在同一个网络上。
我们的两个环境已经开始这样做了,虽然允许从网关地址进行连接是一个简单的解决方案,但如果不了解发生了什么以及原因,我就很犹豫是否继续。这似乎还为应用程序中的数据库查询增加了额外的延迟。
通过phpmyadmin登录到受影响的环境时显示“用户:root@172.21.0.1在“数据库服务器”信息窗格中。“显示未受影响的环境”root@phpmyadmin_1.test_default“(user@[container].[network])。
两个环境都使用完全相同的图像和相同版本的docker- 18.06.1-ce
. 除了docker的一个版本升级之外,其他关于 docker-compose.yml
我在用。
为什么我的环境开始这样?我应该更喜欢从实际来源而不是通过网关的连接吗?我怎样才能回到那种运作方式?
谢谢你的指导和知识。
1条答案
按热度按时间sg2wtvxw1#
对于其他任何经历过类似情况的人,我认为这是由docker从
18.03.1-ce
至18.06.1-ce
通过docker自己的存储库。在此操作之后执行服务器重新启动已经(目前)恢复了对堆栈网络的感知。到mysql容器的连接现在正确地来自php/apache容器,而不是来自网桥网络的网关地址。这个引入的延迟消失了,我可以删除与网关地址相关的特权。