新しい環境で docker compose up -d –build したところ、
✘ Network xxxxxxxx Error 0.0s failed to create network xxxxxxxx: Error response from daemon: Pool overlaps with other one on this address space
のエラーで動かない。(“xxxxxxxx” はネットワーク名)
これはネットワークが重複しているので新規に作れないということらしい。ググると大体のサイトに
$ docker system prune
上記コマンドで使っていないネットワークを削除すると動くようになるとの記述があるが、私の環境ではこのコマンドを何度実行しても冒頭のエラーとなり、動かなかった。
今回の私の環境は若干特殊でコンテナ一つ一つに下記のように固定のIPアドレスを振っている。
networks: xxxxxxxx: ipv4_address: 172.20.0.1
ということで、ネットワーク名ではなくIPアドレスの重複が原因ではないか。(参照)
そこで、現在のネットワークインタフェース状態を確認。
$ ip addr | grep 172.20
すると
inet 172.20.0.1/16 brd 172.20.255.255 scope global br-abcdefxxxx
のように、確かに既に172.20.0.1が使われているようである。dockerのネットワークを確認する。
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
abcdefxxxx docker_default bridge local
上記のように、NETWORK ID が一致する行が見つかった。docker_defaultということで気になるがとりあえずこのdockerネットワークを削除しようとするが、利用中ということで削除できず。
error while removing network: network docker_default id xxxxxxxxxxxx has active endpoints
docker ps してみると、別件のテストで作ったコンテナのみが docker_default を使っているようなのでこのコンテナを docker rm した後、
$ docker network rm abcdefxxxx
を実行。ここで、docker compose up -d –build すると問題なく環境構築が完了した。