在 Ubuntu 18.04 的路由表中,我有以下条目:
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-9f3f970041e3
172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-66d1d4ca46a2
172.19.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
docker0 条目我设法通过创建一个/etc/docker/daemon.json
文件并添加{"bip": "172.19.0.1/16"}
到它来移动到不同的 IP 范围。
我不确定这些br-*
条目来自哪里,但我知道如果我删除它们,Docker 就会停止工作,所以它们会被 Docker 使用。
我需要让 Docker 分配这些br-*
地址,172.20.0.0
因为172.21.0.0
corp 网络使用他们当前占用的地址。
问题:
- Docker 的哪个部分正在创建这些
br-*
条目? - Docker 如何使用这些条目?
- 如何配置 Docker 以将它们分配给其他范围?
Docker 使用网桥将网络分成几个独立的部分。
br-*
通常是在docker-compose
您使用 compose 文件 (docker-compose.yml
) 运行容器时使用文件创建的。所以 docker 创建了一个新的网桥来隔离你的容器。您可以通过以下方式查看您的网络:输出:
br-*
桥梁来自br-<NETWORK ID>
您的网络。您可以使用以下命令查看其子网和使用此网络的容器:
输出:
要更改此子网范围,您必须使用自定义子网创建一个新网络:
并将您的容器重新连接到新网络。您必须对使用 old_network 的所有容器重复此操作。
现在您可以删除 old_network 并使用范围。