Fedora 33에서 Docker 20.10.7을 사용하고 있습니다.
$ uname -r
5.12.8-200.fc33.x86_64
$ docker -v
Docker version 20.10.7, build f0df350
새 Docker 네트워크를 생성하려고 하면 다음 오류가 발생합니다.
$ docker network create --subnet 172.18.128.0/17 si
Error response from daemon: cannot create network 87c3cae81d6e379b4fec55a671fc26e547debc218d16b9e762435b7aa6f9ca28 (br-87c3cae81d6e): conflicts with network 8247c1fe85afa51c174529086ad8bc58069e8aac336cc99239b2cce21311ecb9 (br-8247c1fe85af): networks have overlapping IPv4
기본값 외에는 도커 네트워크가 없는 것 같지만:
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
93e55f691850 bridge bridge local
57062f01a833 host host local
3f81078d2755 none null local
네트워크 브리지가 있는 것 같습니다. 이는 아마도 현재 제거된 도커 네트워킹의 잔재일 것입니다.
$ brctl show
bridge name bridge id STP enabled interfaces
br-0ccb5edb60fa 8000.02425e65824c no
br-0ebff3222c7d 8000.0242ad165003 no
br-13b92f8a402d 8000.0242fd54405d no
br-3fe8819f1dab 8000.0242df196682 no
br-62855eeb66b1 8000.024279b970d4 no
br-64f88c232b42 8000.024294a697d3 no
br-6cb52985982b 8000.0242fa683006 no
br-7b91629f9dc5 8000.02429075dacd no
br-8247c1fe85af 8000.0242da4e1ba9 no
br-9e6e08fae543 8000.0242a0c94c05 no
br-b04024820e6b 8000.024251673cfb no
br-bb03dc88def2 8000.0242d550a519 no
br-c3bfd0e7bfac 8000.02420fc70d06 no
br-f446efca8607 8000.02423c5f7dff no
br-fc4085566463 8000.0242c5a5a9ed no
docker0 8000.0242090fcff7 no
그래서 내 생각은 새로운 도커 네트워크를 만드는 것이 잘 작동할 것이라고 생각하면서 이러한 브리지를 제거하는 것이었습니다.
$ sudo ip link del br-0ccb5edb60fa # do this for all bridges
$ brctl show
bridge name bridge id STP enabled interfaces
docker0 8000.0242090fcff7 no
하지만 불행하게도 다음과 같은 오류가 여전히 존재합니다.
$ docker network create --subnet 172.18.128.0/17 si
Error response from daemon: cannot create network 60b9a9c6f1b032cf54ac799e5b8f2a96b1d55a05492e5357ffb6b002f10a27de (br-60b9a9c6f1b0): conflicts with network fc4085566463d57a641dbb3f5bba4888dbdf3908868f30d4e0c46edf19c001e4 (br-fc4085566463): networks have overlapping IPv4
docker 서비스를 다시 시작하면 문제가 해결될 수 있을 것 같습니다.
$ sudo systemctl restart docker
하지만 docker 서비스를 다시 시작한 후 브리지가 다시 나타났습니다!
$ brctl show
bridge name bridge id STP enabled interfaces
br-0ccb5edb60fa 8000.0242ba61c513 no
br-0ebff3222c7d 8000.0242ae82887a no
br-13b92f8a402d 8000.02421fa70d86 no
br-3fe8819f1dab 8000.0242a7c0d3cd no
br-62855eeb66b1 8000.02423b35c43d no
br-64f88c232b42 8000.0242e3235138 no
br-6cb52985982b 8000.024264333192 no
br-7b91629f9dc5 8000.02420c574876 no
br-8247c1fe85af 8000.02423b3845ee no
br-9e6e08fae543 8000.024285a4da86 no
br-b04024820e6b 8000.02425a16a19f no
br-bb03dc88def2 8000.02422c2da231 no
br-c3bfd0e7bfac 8000.024250df5e93 no
br-f446efca8607 8000.024234091377 no
br-fc4085566463 8000.0242eda476ce no
docker0 8000.0242090fcff7 no
시도했지만 도움이 되지 않은 다른 것:
$ docker network prune -f
$ docker system prune -f
# tried the following commands for all existing bridges
$ nmcli connection delete br-0ccb5edb60fa
$ sudo brctl delbr br-0ccb5edb60fa
$ sudo firewall-cmd --zone=docker --remove-interface=br-0ccb5edb60fa --permanent
Warning: NOT_ENABLED: br-0ccb5edb60fa
success
브리지를 안정적으로 삭제하지 못하게 하는 요인은 무엇입니까?
답변1
docker가 계속 브리지를 다시 만드는 이유를 이해합니다. 이 파일은 바이너리 파일(BoltDB)에 저장되어 있는 것으로 보이며 /var/lib/docker/network/files/local-kv.db
이는 왜 사용하지 않는지 설명합니다 grep
.
파일을 삭제하고 Docker를 다시 시작하면 문제가 해결되었습니다. 다음 명령( 에서 실행됨 zsh
, 다른 셸은 다를 수 있음)은 모든 브리지와 위 파일을 삭제하고 docker 서비스를 다시 시작합니다. 그 후 아무런 오류 없이 도커 네트워크를 만들 수 있었습니다.
while read; do
if [ ! -z "$REPLY" ]; then
sudo ip link del $REPLY
fi
done <<<"$(brctl show | grep '^br-' | awk '{print $1}')"
sudo rm /var/lib/docker/network/files/local-kv.db
sudo systemctl restart docker