首页 > 解决方案 > Docker内部网络和要连接的外部系统在同一范围内,即172.160.0.0/16

问题描述

在我当前的应用程序中,容器使用 172.16.0.0/16 网络与主机中的其他容器连接。现在我们需要连接到 IP 地址为 172.16.2.2 的外部系统

在尝试连接/ping 到这个 IP 172.16.2.2 时,它被阻止说没有到主机的路由。

所以我的理解是,在 255.255.0.0 的 genmask 下 172.16.0.0 中的任何东西都不会脱离外部接口。

解决此问题的最简单方法是什么,或者我是否需要更改我的内部 docker 网络以使用 192.168.0.0/16 范围

标签: dockernetworkingdocker-networkingdocker-network

解决方案


您将需要更改内部 docker 网络。或者,如果您使用的是 docker-compose,您可以使用不同的子网更改默认的 docker 网络。

networks:
  default:
    ipam:
      config:
        - subnet: 172.20.0.0/16

对于内部 docker 网络,您可以通过在/etc/docker/daemon.json(在 linux 上)文件中设置参数来配置默认桥接网络,如下所示:

{
  "bip": "192.168.1.5/24",
  "fixed-cidr": "192.168.1.5/25",
  "fixed-cidr-v6": "2001:db8::/64",
  "mtu": 1500,
  "default-gateway": "10.20.1.1",
  "default-gateway-v6": "2001:db8:abcd::89",
  "dns": ["10.20.1.2","10.20.1.3"]
}

参考:https ://docs.docker.com/network/bridge/#configure-the-default-bridge-network

这里的答案相同:如何配置 docker 以避免特定地址或子网?


推荐阅读