簡體   English   中英

如何更改 docker swarm 入口網絡的 IP 地址范圍

[英]How to change ip address range of docker swarm ingress network

我使用 docker swarm 1.13.1,當我初始化 docker swarm 或加入 docker swarm 時,它有時會在“172.19.0.0/16”子網中創建一個 docker_gwbridge 網絡。

但是我的計算機子網在相同的范圍內,所以當它初始化這個網絡時,docker swarm 主機變得無法從我的計算機訪問。

所以我的問題是:如何更改現有 docker 網絡的子網。

> docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
ac1100164960        bridge              bridge              local
3838ae360f35        docker_gwbridge     bridge              local
f9a77266aa15        host                host                local
rgqnm19zbasv        ingress             overlay             swarm
04c1c6b3ade7        none                null                local

檢查網絡:

> docker network inspect 3838ae360f35
[
    {
        "Name": "docker_gwbridge",
        "Id": "3838ae360f3585f2cda8a43a939643cdd74c0db9bfb7f4f18b3b80ae07b3b9db",
        "Created": "2017-03-22T13:26:50.352865644+01:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.19.0.0/16",
                    "Gateway": "172.19.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Containers": {
            "ingress-sbox": {
                "Name": "gateway_ingress-sbox",
                "EndpointID": "194d965dd2997bddb52eab636950e219043215a5a1a6a60d08f34e454a0eaa56",
                "MacAddress": "02:42:ac:13:00:02",
                "IPv4Address": "172.19.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {
            "com.docker.network.bridge.enable_icc": "false",
            "com.docker.network.bridge.enable_ip_masquerade": "true",
            "com.docker.network.bridge.name": "docker_gwbridge"
        },
        "Labels": {}
    }
]

您可以在初始化 swarm 之前創建docker_gwbridge ,如此處所述

例如:

docker network rm docker_gwbridge
docker network create --subnet=172.20.0.1/16 -o com.docker.network.bridge.enable_icc=false -o com.docker.network.bridge.name=docker_gwbridge docker_gwbridge

解決此問題的一般方法,包括由 docker 或其他工具(如 docker-compose)為您創建的任何(非入口)網絡,是在您的docker daemon config 中設置默認地址池

在您的情況下,添加到/etc/docker/daemon.json ,例如:

{
  "default-address-pools": [
    {
      "base": "10.10.0.0/16",
      "size": 24
    }
  ]
}

這樣,您的 docker bridge網絡將獲得10.10.0.0/24的子網,而您的docker_gwbridge swarm docker_gwbridge將獲得10.10.0.1/24的子網。 docker-compose.yml文件為您創建的任何其他網絡都將獲得后續的10.10.0.2/24子網。 等等。

您沒有提到這是一個問題,但不幸的是,這似乎不適用於ingress網絡。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM