Fedora 33 및 Docker에서 브리지를 삭제할 수 없습니다.

Fedora 33 및 Docker에서 브리지를 삭제할 수 없습니다.

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

관련 정보