为什么路由器会阻止docker中的容器连接?

为什么路由器会阻止docker中的容器连接?

我在使用 docker 环境时遇到了一个问题:我可以克隆并构建它,但是一旦我运行docker-compose up,其中一个服务(我们称之为 A)就无法启动,因为它无法访问其依赖服务(我们称之为 B):

serviceA   | 2021/05/06 22:14:25 Problem with dial: dial tcp 127.0.0.1:5432: getsockopt: connection refused. Sleeping 1s
serviceA   | 2021/05/06 22:14:25 Timeout after 30s waiting on dependencies to become available: [tcp://serviceB:5432]

在我最近的一次测试中,路由器因断电而关闭,所以我无法上网……突然间,服务正常启动了!然后我再次尝试运行,docker-compose up同时打开和关闭 wifi,我可以肯定地说,当我离线时,问题就消失了。

以前有人遇到过这种情况吗?网络不是我的专业领域,所以我想了解为什么会发生这种情况 - 以及如何一劳永逸地解决它:到目前为止,我发现的唯一解决方案是在跑步时关闭 wifi docker-compose up/run...

我正在使用 Ubuntu 20.04,Docker 版本是 20.10.6。路由器是 TIM Hub Technicolor AGHP,据我所知,其中没有定义端口转发规则。

附言:请随时询问我可能遗漏的任何细节:正如我所说,网络不是我的专业领域,所以我根本不知道什么有用,什么没用......

更新 1:我在另一台计算机上执行了相同的步骤,运行 Ubuntu 18.04 和 Docker 20.10.6,行为相同。

更新 2:使用另一个连接而不是我的家用路由器的连接,服务按预期上升。

相关内容