在我使用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就好了