컴퓨터를 다시 시작하고 docker.service를 비활성화하면 내 IP a의 출력에 br1이 없습니다.
그러나 docker를 시작한 후 br1이 나타납니다.
그러나 sudo docker network inspect
관련 네트워크는 표시되지 않습니다.
Error response from daemon: cannot create network 33618cb1603a773a11d97750182fde9d8feb98c03a9882bb0c4539c3ea3fbe1d (br1): conflicts with network aed743fd32b35084f5ccee11e4cfb631b31dccb2fec79cba60cd5f4252b03106 (br1): networks have same bridge name
sudo docker network inspect aed743fd32b35084f5ccee11e4cfb631b31dccb2fec79cba60cd5f4252b03106
[]
Error response from daemon: network aed743fd32b35084f5ccee11e4cfb631b31dccb2fec79cba60cd5f4252b03106 not found
그렇다면 이 네트워크는 어디에 있으며 어떻게 찾을 수 있습니까?
그렇게 했는데 sudo docker network prune
이제 3개의 항목만 남았습니다. 그러나 br1은 여전히 생성됩니다.
답변1
이는 Docker 네트워크 삭제에 실패하고 브리지 레코드가 데이터베이스에 남아 있는 경우 발생합니다. 데이터베이스 위치는 /var/lib/docker/network/files/local-kv.db
(AlmaLinux)입니다. 일반적인 조언은 Docker를 중지하고, 이 데이터베이스를 삭제하고, 컨테이너를 다시 빌드하는 것이지만, 이는 대규모 인프라에 가장 적합한 솔루션은 아닙니다. 이 경우 더 나은 해결책은 데이터베이스에서 나머지 브리지 레코드를 삭제하는 것입니다. 이는 Boltcli 도구(https://github.com/spacewander/boltcli).
go가 설치되었다고 가정하고 boltcli를 설치합니다.
go install github.com/spacewander/boltcli@latest
local-kv.db를 복사하고 Boltcli를 사용하여 엽니다.
boltcli /path_to_db_copy/local-kv.db
사용할 버킷을 나열하십시오.
buckets *
버킷은 "libnetwork"일 가능성이 높습니다.충돌하는 네트워크(또는 그 일부)의 ID를 기반으로 키를 찾습니다(질문의 aed743fd32b35084f5ccee11e4cfb631b31dccb2fec79cba60cd5f4252b03106).
keys libnetwork *aed743fd32b35084f5ccee11e4cfb631b31dccb2fec79cba60cd5f4252b03106*
반환된 키(아마도 "docker/network/v1.0/bridge/aed743fd32b35084f5ccee11e4cfb631b31dccb2fec79cba60cd5f4252b03106/")를 사용하여 레코드를 삭제합니다.
del libnetwork docker/network/v1.0/bridge/aed743fd32b35084f5ccee11e4cfb631b31dccb2fec79cba60cd5f4252b03106/
boltcli( Ctrl+ C)를 종료하고 Docker를 중지한 후 원본 데이터베이스 파일을 변경된 데이터베이스 파일로 덮어씁니다(이 작업을 수행하기 전에 원본 데이터베이스 파일을 복사하는 것이 좋습니다). 도커를 시작하세요.