Docker "ERROR: could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network"
docker, docker-compose, python
Solution
Following Peter Hauge's comment, upon running `docker network ls` I saw (among other lines) the following:
NETWORK ID NAME DRIVER SCOPE
dc6a83d13f44 bridge bridge local
ea98225c7754 docker_gwbridge bridge local
107dcd8aa889 host host local
The line with `NAME` and `DRIVER` as both `host` seems to be what he is referring to with "networks already created on your host". So, following https://gist.github.com/bastman/5b57ddb3c11942094f8d0a97d461b430, I ran the command
docker network rm $(docker network ls | grep "bridge" | awk '/ / { print $1 }')
Now `docker-compose up` works (although `newnym.py` produces an error).
Problem
I have a directory `apkmirror-scraper-compose` with the following structure: ``` . ├── docker-compose.yml ├── privoxy │ ├── config │ └── Dockerfile ├── scraper │ ├── Dockerfile │ ├── newnym.py │ └── requirements.txt └── tor └── Dockerfile ``` I'm trying to run the following `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 ``` where the `Dockerfile` for `tor` is ``` 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"] ``` that for `privoxy` is ``` FROM alpine:latest EXPOSE 8118 RUN apk --update add privoxy COPY config /etc/privoxy/config CMD ["privoxy", "--no-daemon"] ``` where `config` consists of the two lines ``` listen-address 0.0.0.0:8118 forward-socks5 / tor:9050 . ``` and the `Dockerfile` for `scraper` is ``` FROM python:2.7-alpine ADD . /scraper WORKDIR /scraper RUN pip install -r requirements.txt CMD ["python", "newnym.py"] ``` where `requirements.txt` contains the single line `requests`. Finally, the program `newnym.py` is designed to simply test whether changing the IP address using Tor is working: ``` 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))) ``` The `docker-compose build` builds successfully, but if I try `docker-compose up`, I get the following error message: ``` 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 ``` I tried searching for help on this error message, but couldn't find any. What is causing this error?