在我使用 docker-compose 的时候出现了报错,报错如下
Docker“ERROR: could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network”
如果你出现这个问题,请确认你主机上面是否存在 openvpn,如果不存在则是别的原因。
说明:
Openvpn 为以下网络添加路由:0.0.0.0/1
和128.0.0.0/1
(这些路由覆盖整个 IP 范围),并且 docker 无法找到 IP 地址范围来创建它自己的专用网络。
您需要添加一条默认路由(通过 openvpn 路由所有路由)并禁用这两条特定路由
这个脚本是在 openvpn 添加自己的路由之后调用的。要执行脚本,您需要设置 script-security
为2
允许从 openvpn 上下文执行 bash 脚本。
解决方法:
编辑脚本:fix-routes.sh
#!/bin/sh
echo "Adding default route to $route_vpn_gateway with /0 mask..."
/usr/sbin/ip route add default via $route_vpn_gateway
echo "Removing /1 routes..."
/usr/sbin/ip route del 0.0.0.0/1 via $route_vpn_gateway
/usr/sbin/ip route del 128.0.0.0/1 via $route_vpn_gateway
加上权限
chmod o+x fix-routes.sh
编辑 openvpn 客户端配置文件加入下面两个参数
script-security 2
route-up 你的脚本路径 /fix-routes.sh
重启 openvpn,然后再次使用 docker-compose 就好了