[도커] Docker Error Response From Daemon: Driver Failed Programming External Connectivity On Endpoint

2023. 6. 20. 15:26ERROR

docker-compose를 이용해서 MySQL 컨테이너를 실행했을때 위와 같은 에러가 계속해서 발생했다.
이미지를 run하려고 했을 때, docker-compose에서 설정한 포트 번호가 이미 사용중이라고 한다.

그런데 나는 3306번 포트를 MySQL 컨테이너 이외에는 할당한 적이 없었다. 뿐만아니라 계속 MySQL 컨테이너로 할당했던 3306 포트가 docker-compose를 재실행 할 때마다 위와 같은 에러가 발생하는 것이 이상하다고 생각했다. 

3306 포트에서 실행중이던 process를 죽이고 나면 MySQL 컨테이너를 수동으로 다시 띄울 수 있었다. 하지만 이렇게 띄운 MySQL 서버에는 스프링 부트 Container에서 연결 요청이 실패하였다. 

처음에는 포트 포워딩을 잘못했는지, 보안 그룹 설정에 문제라도 있었는지 계속 살펴보았는데 문제점을 찾을 수 없었다.

 

그러다가,

https://stackoverflow.com/questions/39508018/docker-driver-failed-programming-external-connectivity-on-endpoint-webserver

 

docker: driver failed programming external connectivity on endpoint webserver

I am trying to run a docker example following this documentation This is my command: docker run -d -p 80:80 --name webserver nginx But I get this error: docker: Error response from daemon: driver

stackoverflow.com

 

위의 링크에서 해결할 수 있는 방법을 찾았다.

도커가 가지고 있는 캐시 때문에 해당 포트(3306)를 사용중이라고 인식했던 것 같다.  
아래의 명령어를 통해 도커의 캐시를 삭제하여 문제를 해결했고, Spring Boot 서버에서도 DB와 연결을 할 수 있었다.
삭제한 파일은 도커 네트워크 관련 DB로, 도커 서비스가 재 실행될 때 DB 파일은 다시 생성된다.

 sudo service docker stop
 sudo rm /var/lib/docker/network/files/local-kv.db
 sudo service docker start