在一个简化的示例中,我有 3 个 Docker 容器位于 2 个 Docker 网络上:
Container_A : Connected to Network_1 and Network_2
Container_B : Connected to Network_1
Container_C : Connected to Network_2
从Container_A内部运行时ping Container_B
,Docker网络层解析Container_C的IP地址而不是Contaier_B的IP地址。
如果我杀死 Container_C,名称解析将恢复到预期行为,但是一旦 Container_C 重新上线,网络层就会再次开始解析错误的 IP 地址。
这让我很头疼,我不知道该如何解决。谢谢大家的建议。
答案1
您应该提供您的配置。我已经编写了一个快速的 docker-compose 文件,docker 正在正确解析所有内容:
version: '3.7'
services:
nginx1:
image: nginx:alpine
networks:
- network1
- network2
nginx2:
image: nginx:alpine
networks:
- network1
nginx3:
image: nginx:alpine
networks:
- network2
networks:
network1:
external: true
network2:
external: true
显然,在运行docker-compose之前,您需要运行:
docker network create network1 && docker network create network2