Docker“错误:在分配给networking的默认值中找不到可用,不重叠的IPv4地址池”

我有一个目录apkmirror-scraper-compose与以下结构:

 . ├── docker-compose.yml ├── privoxy │  ├── config │  └── Dockerfile ├── scraper │  ├── Dockerfile │  ├── newnym.py │  └── requirements.txt └── tor └── Dockerfile 

我试图运行以下docker-compose.yml

 version: '3' services: privoxy: build: ./privoxy ports: - "8118:8118" links: - tor tor: build: context: ./tor args: password: "" ports: - "9050:9050" - "9051:9051" scraper: build: ./scraper links: - tor - privoxy 

torDockerfile在哪里

 FROM alpine:latest EXPOSE 9050 9051 ARG password RUN apk --update add tor RUN echo "ControlPort 9051" >> /etc/tor/torrc RUN echo "HashedControlPassword $(tor --quiet --hash-password $password)" >> /etc/tor/torrc CMD ["tor"] 

对于privoxy

 FROM alpine:latest EXPOSE 8118 RUN apk --update add privoxy COPY config /etc/privoxy/config CMD ["privoxy", "--no-daemon"] 

其中config由两行组成

 listen-address 0.0.0.0:8118 forward-socks5 / tor:9050 . 

scraperDockerfile

 FROM python:2.7-alpine ADD . /scraper WORKDIR /scraper RUN pip install -r requirements.txt CMD ["python", "newnym.py"] 

其中requirements.txt包含单行requests 。 最后,程序newnym.py的目的是简单地testing是否改变使用Tor的IP地址正在工作:

 from time import sleep, time import requests as req import telnetlib def get_ip(): IPECHO_ENDPOINT = 'http://ipecho.net/plain' HTTP_PROXY = 'http://privoxy:8118' return req.get(IPECHO_ENDPOINT, proxies={'http': HTTP_PROXY}).text def request_ip_change(): tn = telnetlib.Telnet('tor', 9051) tn.read_until("Escape character is '^]'.", 2) tn.write('AUTHENTICATE ""\r\n') tn.read_until("250 OK", 2) tn.write("signal NEWNYM\r\n") tn.read_until("250 OK", 2) tn.write("quit\r\n") tn.close() if __name__ == '__main__': dts = [] try: while True: ip = get_ip() t0 = time() request_ip_change() while True: new_ip = get_ip() if new_ip == ip: sleep(1) else: break dt = time() - t0 dts.append(dt) print("{} -> {} in ~{}s".format(ip, new_ip, int(dt))) except KeyboardInterrupt: print("Stopping...") print("Average: {}".format(sum(dts) / len(dts))) 

docker-compose build构build成功构build,但是如果我尝试docker-compose up ,我得到以下错误信息:

 Creating network "apkmirrorscrapercompose_default" with the default driver ERROR: could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network 

我试图寻找这个错误消息的帮助,但找不到任何。 什么是造成这个错误?

我已经看到它build议docker可能在其创buildnetworking的最大限度。 命令docker network prune可以用来删除所有未被至less一个容器使用的networking。

我的问题结束了,正如罗伯特所评论的那样:openvpn service openvpn stop的问题“解决了”问题。

继彼得·豪格 ( Peter Hauge )的评论之后,我在运行docker network ls看到了以下内容:

 NETWORK ID NAME DRIVER SCOPE dc6a83d13f44 bridge bridge local ea98225c7754 docker_gwbridge bridge local 107dcd8aa889 host host local 

NAMEDRIVER作为host似乎是他所指的“已经在您的主机上创build的networking”。 所以,以下https://gist.github.com/bastman/5b57ddb3c11942094f8d0a97d461b430 ,我运行命令

 docker network rm $(docker network ls | grep "bridge" | awk '/ / { print $1 }') 

现在newnym.py docker-compose up起作用(尽pipenewnym.py产生一个错误)。

我有同样的错误信息相同的问题,但删除未使用的dockernetworking的解决scheme并没有帮助我。 我已经删除了所有非默认的dockernetworking(也包括所有的图片和容器),但并没有帮助 – docker仍然无法创build新的networking。

问题的原因是openvpn安装后留下的networking接口。 (之前安装在主机上)我通过运行ifconfig命令find它们:

 ... tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:10.8.0.2 PtP:10.8.0.2 Mask:255.255.255.0 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:75 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:84304 (84.3 KB) TX bytes:0 (0.0 B) tun1 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:10.8.0.2 PtP:10.8.0.2 Mask:255.255.255.0 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:200496 errors:0 dropped:0 overruns:0 frame:0 TX packets:148828 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:211583838 (211.5 MB) TX bytes:9568906 (9.5 MB) ... 

我发现我可以用一些命令删除它们:

 ip link delete tun0 ip link delete tun1 

这个问题消失后。

你可以试试

 $sudo service network-manager restart 

为我工作。

我遇到了这个问题,因为我运行了OpenVPN。 一旦我杀了OpenVPN, docker-compose up了,错误消失了。