Docker创建网络报错:无法找到可用非重叠IPv4地址池求助
解决Docker创建网络时的IPv4地址池冲突问题
嘿,这个问题我之前在生产环境里碰过,虽然你已经试过docker network prune没用,但还有几个更直接的办法能解决,你可以试试:
手动指定不冲突的子网创建网络
先通过ip addr命令查看主机当前所有在用的网段,选一个完全没被占用的(比如192.168.200.0/24),然后用以下命令创建网络:docker network create --subnet=192.168.200.0/24 mynetwork这样Docker就会用你指定的子网,不会再去默认池子里找可用地址了。
修改Docker守护进程的默认地址池配置
如果不想每次创建网络都手动指定子网,可以修改Docker的全局配置:- 编辑(或创建)
/etc/docker/daemon.json文件,加入自定义的地址池:
这里的{ "default-address-pools": [ {"base": "192.168.100.0/24", "size": 24}, {"base": "192.168.101.0/24", "size": 24} ] }base是你想让Docker使用的起始网段,size是子网掩码长度(24代表每个子网有254个可用IP)。 - 重启Docker服务让配置生效:
之后再创建网络,Docker就会优先从你指定的池子里分配地址了。systemctl restart docker
- 编辑(或创建)
排查主机上的隐性网段占用
虽然你说没装OpenVPN,但可以用route -n命令查看主机的路由表,检查有没有和Docker默认网段(通常是172.17.0.0/16、172.18.0.0/16、192.168.0.0/20这类)重叠的路由条目。如果有,找到对应的服务或网卡调整网段,但这个操作相对复杂,优先尝试前两个方法。
创建完网络后,你可以用docker network inspect mynetwork命令验证子网配置是否正确,确认没问题就可以正常使用了。
内容的提问来源于stack exchange,提问作者Neo
相关产品推荐
相关产品推荐

