Docker网络层将容器名称解析为错误的IP地址

Docker网络层将容器名称解析为错误的IP地址

在一个简化的示例中,我有 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

相关内容