Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:5432 -> 0.0.0.0:0: listen tcp 0.0.0.0:5432: bind: address already in use

Yeshin Lee
2 min readSep 9, 2024

--

TL;DR

# lsof 명령어로 현재 5432포트를 사용중인 프로세스 검색
sudo lsof -i :5432

# 해당 프로세스 죽이기
sudo kill [-9] PID

# 도커 컴포즈 재실행
docker-compose up -d

다른 프로세스가 이미 해당 port를 점유해 사용 중일 때 주로 발생하는 에러다. 좀 더 찾아보니, 도커 컨테이너가 제대로 종료되지 않거나 PostgreSQL 인스턴스가 백그라운드에서 실행 중일 때도 발생한다.

나의 경우, docker-compose로 pgAdmin과 postgreSQL를 실행하려고 했을 때 나타났다. 해당 port 사용하는 프로세스를 죽이고 다시 시도하면 되는 것으로 해결 자체는 간단하다.

  • kill -9 [PID] 명령어는 강제 종료를 수행하는데 비정상적인 종료는 데이터 손상을 발생시킬 수 있다 일반적인 kill 명령어를 사용하고 해결되지 않았을 때 -9 옵션을 붙이자.
sudo를 입력하지 않고 실행하면 아무 것도 보이지 않을 수 있다.

sudo를 사용하지 않고 실행하면 사용자 권한 내에서만 네트워크 소켓을 열고 있는 프로세스를 나열하기 때문에 안보일 수 있다. sudo는 시스템 전체 프로세스를 포함한 최상위 권한을 갖게 되므로, root에 의해 실행 중인 프로세스까지 확인할 수 있다.

이외에 여러 컨테이너의 로그를 한 번에 확인하고 싶다면 다음 명령어를 참고하자.

# show all container's logs
docker-compose logs

# show specific container log
docker-compose logs SERVICE_NAME

# show specific container error log
docker-compose logs SERVICE_NAME | grep "ERROR"

--

--

Yeshin Lee
Yeshin Lee

No responses yet