Skip to content

管理docker网络地址范围

默认网络

Docker 默认的网络设置使用了 bridge 网络驱动,默认情况下 Docker 容器会连接到这个 bridge 网络。Docker 的默认 bridge 网络通常使用以下 IP 段:

默认子网: 172.17.0.0/16 默认网关: 172.17.0.1 每次创建新的容器时,Docker 会为该容器分配一个 IP 地址,通常在 172.17.0.0/16 范围内。

默认情况下每个docker-compose.yml文件都会创建一个网络 地址类似下面的 172.18.0.0/16 172.19.0.0/16 172.20.0.0/16

这样的网络分配可能会和本地的网络冲突,导致无法上网等问题。

可以使用ip route | grep br-*查看存在的网络

也可以使用docker network ls查看docker网络和容器关联信息

限制docker网络在172.17.0.0/16内

sudo nano /etc/docker/daemon.json 修改文件,添加如下内容:

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

也可以配置多个地址池,如:

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

配置完成后,重启docker服务即可。

不过已经分配的地址池不会被修改,需要重新分配。

操作是删除容器,再重新启动即可