将Docker配置为不使用172.17.0.0范围


22

由于强制门户和默认Docker IP范围的问题,我试图使Docker使用198.18.0.0范围,而不是172.17.0.0,这与我住的火车上使用的强制门户冲突。

docs之后,我创建了/etc/docker/daemon.json,并在其中添加了以下内容:

{
    "bip":"198.18.0.0/16"
}

这适用于docker0,但似乎并没有影响任何其他网络,使用docker compose创建的第一个网络是172.17.0.0,它重新创建了冲突。

我该怎么做才能更改所有 docker网络的默认子网(最好不必在每个撰写文件中声明我的自定义IP范围)?

Answers:


27

可以重新定义默认范围。

$ docker -v
Docker version 18.06.0-ce, build 0ffa825

编辑或创建docker守护程序的配置文件:

# nano /etc/docker/daemon.json

添加行:

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

重新启动dockerd:

# service docker restart

检查结果:

$ docker network create foo
$ docker network inspect foo | grep Subnet
                    "Subnet": "10.10.1.0/24"

它也适用于docker-compose。更多信息在这里https://github.com/moby/moby/pull/29376(合并)


1
10.10.0.0/16与全局默认网络重叠。您可以使用{“ base”:“ 192.168.0.0/16","size":24}。请参阅github.com/moby/moby/blob/...
根摹

11

docker将在三个位置生成网络子网。

  • 默认桥
  • 用户生成的桥接网络
  • 群体模式生成的覆盖网络

对于默认的网桥(称为“网桥”),您可以在文件中指定BIP(我相信这是网桥IP;请确保它是主机IP,而不是网络IPdaemon.json。对于用户生成的网桥网络,您可以定义一个子网池以供选择(假设用户未手动指定子网)。对于这两个,您/etc/docker/daemon.json将看起来像:

{
  "bip": "10.200.0.1/24",
  "default-address-pools":[
    {"base":"10.201.0.0/16","size":24},
    {"base":"10.202.0.0/16","size":24}
  ]
}

上面的每个地址池设置都定义了CIDR范围和要从该范围分配的子网的大小。因此,以上定义了两个B类范围,它们被分配为C类网络(/ 24)。对于默认地址池,您至少需要18.06。您将需要重新加载docker守护程序才能应用此更改(systemctl reload docker)。而且此更改只会修改新创建的用户网络,因此您需要停止容器并删除错误范围内的现有网络。


在18.09中,Docker添加了为群集模式生成的覆盖网络指定地址范围的功能。现在只能在创建群集时完成此操作,希望将来会进行更新以允许docker swarm update调整以下池:

$ docker swarm init \
  --default-addr-pool 10.202.0.0/16 \
  --default-addr-pool 10.203.0.0/16 \
  --default-addr-pool-mask-length 24

1
当前2018/2019选项的摘要。另外,如果使用Docker Desktop,则为bip“设置/首选项” GUI中的选项。因为default-address-pools您可以在同一GUI中手动编辑daemon.json,而对于swarm而言default-addr-pool,仍可以使用init命令对其进行更改。
Bret Fisher

1

配置默认的桥接网络:“…要配置默认的桥接网络,请在daemon.json中指定选项。这是一个daemon.json示例,其中指定了多个选项。仅指定需要自定义的设置。…”

使用compose:指定自定义网络:“ ...不仅可以使用默认的应用程序网络,还可以使用顶级网络密钥指定您自己的网络。这使您可以创建更复杂的拓扑并指定自定义网络驱动程序和选项。使用它可以将服务连接到不受Compose管理的外部创建的网络。


是否可以更改用于docker-compose和未明确设置范围的隐式网络的IP范围?
jrtapsell

-1

这可能有点残酷,但我只是执行了一个操作,sudo ifconfig docker0 down以关闭与我尝试使用的wifi冲突的接口。


问题是关于使用其他范围,而不是与关闭网络有关。
RalfFriedl

@RalfFriedl是的。但是作为经常使用许多不同wifi网络的旅行者,我已经看到各种端口范围存在冲突。因此,除了搜索端口范围外,还可以暂时关闭网络。
Falko Menge,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.