bind: address already in use

·2024년 5월 30일

문제

Error response from daemon: driver failed programming external connectivity on endpoint rabbit (bcbacc095f8ea8181d9d7a7f48b0d6e9ec4c965de43e54c1c7dcd84b9cecdadf): Error starting userland proxy: listen tcp4 0.0.0.0:5672: bind: address already in use

docker compose up --build 를 했을 때 위와 같은 문제가 발생했다.


원인

docker 를 강제종료 시킬 때 발생할 수 있다고 하는데 정확한 원인은 더 찾아봐야 할 것 같다.
에러 로그를 살펴보면, 이미 사용 중인 포트를 사용하려고 해서 문제가 발생하는 듯하다.
나의 경우엔 docker compose up --build 후 stop을 하고 다시 compose up을 하려고 하면 위와 같은 문제가 발생한다.🤨
이전에는 문제없이 잘 실행됐는데 rabbitMQ 컨테이너를 추가한 이후부터 문제가 발생한다.


해결 방법

docker stop $(docker ps -a -q) # Stop all containers
docker rm -fv $(docker ps -aq)  # Remove all containers
sudo lsof -i -P -n | grep <port number>  # List who's using the port
sudo kill -9 <PID> 

lsof로 문제가 발생한 포트 번호로 grep한다.
확인한 pid를 이용해 kill 해준다.

조금 더 찾아보니 docker를 stop 시킬 필요 없이 sudo lsof -i :[포트넘버] 로 문제가 되는 포트를 사용 중인 프로세스를 찾고 sudo kill -9 [PID] 로 kill해줘도 된다는 사실을 알아냈다!

sudo lsof -i :[port number]
sudo kill -9 [process ID]

그래서 근본적인 원인은?

문제는 해결됐지만.........
이 문제가 발생한 이후로 docker stop 을 이용해 컨테이너를 멈출 때마다 동일한 문제가 발생했다. 애초에 왜 이런 문제가 생기는 건지 조사가 필요할 듯 하다.

profile
🔥

0개의 댓글