【问题标题】:Networks created by docker-compose do not respect Docker's subnet settingsdocker-compose 创建的网络不遵守 Docker 的子网设置
【发布时间】:2018-12-28 05:43:09
【问题描述】:

我公司的网络配置有问题,所以我不得不修改 Docker 的默认子网,详见this KB article

这适用于我的大多数容器,但我仍然遇到其中一些问题。在检查正在使用的网络后,我仍然看到 Docker 分配的 IP 地址超出了允许的范围。

例如,这是我的/etc/docker/daemon.json 文件:

{
    "bip": "172.44.0.1/16"
}

但是,当我创建网络时,Docker 仍然将地址分配给受限范围。例如,我可以像这样轻松地重现这种行为:

$ docker network create test_net
d7ce97965b53b3d3ea1cf0b4169d7851e115b95fe9bb506ebfa6df0964db8630
$ docker network inspect test_net
[
    {
        "Name": "test_net",
        "Id": "d7ce97965b53b3d3ea1cf0b4169d7851e115b95fe9bb506ebfa6df0964db8630",
        "Created": "2018-12-27T12:54:10.515011613-06:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.20.0.0/16",
                    "Gateway": "172.20.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]

是否存在强制 Docker 始终在我指定的 IP 范围内生成网络的方法?

【问题讨论】:

    标签: docker docker-compose


    【解决方案1】:

    解决方案是将其包含在我的撰写文件的顶部:

    networks:
      default:
        driver: bridge
        ipam:
          driver: default
          config:
          - subnet:  10.103.0.1/16
    

    这样做的原因是 Docker Compose 总是为每个未指定的 Compose 应用程序生成一个默认网络。通过在每个应用程序中包含这样的内容,您可以确保您的应用程序永远不会发生冲突并始终使用您指定的 IP 范围。对于更大规模的应用程序,您可能需要增加到 3 个八位字节而不是 2 个(/24 与 /16)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多