"Docker Error bind: address already in use" 오류는 Docker 컨테이너나 Docker 서비스에서 특정한 포트를 사용하려고 할 때, 해당 포트가 이미 다른 프로세스에 의해 사용 중일 때 발생합니다.
이 오류는 주로 다음과 같은 상황에서 발생할 수 있습니다:
포트 충돌:
Docker 컨테이너나 서비스가 호스트의 특정 포트를 사용하려고 할 때, 해당 포트가 다른 프로세스에 이미 사용 중인 경우 충돌이 발생합니다.
이전에 실행 중이던 컨테이너나 서비스가 종료되지 않은 경우:
이전에 실행 중이던 Docker 컨테이너나 서비스가 종료되지 않고 남아 있는 경우 해당 포트를 계속 사용 중일 수 있습니다.
포트를 제대로 해제하지 않은 경우:
이전에 사용 중이었던 프로세스가 해당 포트를 제대로 해제하지 않은 경우에도 발생할 수 있습니다.
반응형
해결방법
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
docker stop $(docker ps -a -q) :
docker ps -a: 모든 Docker 컨테이너 목록을 표시합니다.
docker ps -a -q: 모든 컨테이너의 ID만 표시합니다.
docker stop $(docker ps -a -q): 모든 컨테이너를 중지합니다. -q 옵션은 컨테이너 ID만 출력하도록 하는데, 이를 docker stop 명령에 전달하여 모든 컨테이너를 중지합니다.
docker rm -fv $(docker ps -aq) :
docker rm: Docker 컨테이너를 제거합니다.
-fv: 옵션은 강제로(force) 및 볼륨을 함께 제거하는 것을 의미합니다.
docker ps -aq: 모든 컨테이너의 ID를 표시합니다.
docker rm -fv $(docker ps -aq): 모든 컨테이너를 강제로 제거합니다. -q 옵션은 컨테이너 ID만 출력하도록 하는데, 이를 docker rm 명령에 전달하여 모든 컨테이너를 제거합니다.
sudo lsof -i -P -n | grep <port number> :
sudo lsof: 열려 있는 파일을 나열하는 명령입니다.
-i: 네트워크 연결을 보여줍니다.
-P: 포트 번호를 보여줍니다.
-n: 호스트 이름을 숫자로 표시합니다(릴레이블 이름을 검색하지 않음).
grep <port number>: 특정 포트 번호를 사용 중인 프로세스를 검색합니다.
sudo lsof -i -P -n | grep <port number>: 특정 포트 번호를 사용 중인 프로세스를 확인합니다.