Docker

[Docker] port is already in use 에러

@developer.kye 2021. 12. 23. 15:46

docker start 컨테이너명 을 실행했는데

port 8080 is already in use 와 같은 에러가 나면

 

대부분의 경우 다른 프로세스에서 이 8080을 이미 쓰고 있는 경우이다.

 

netstat -lntp | grep 8080

해서 보이는 프로세스가 쓸모없는 경우 쉽게 kill -9 [pid] 로 해결하면 된다..

 


 

하지만 오늘의 경우 특이한 케이스였는데, (ㅠㅠ)

기존에 돌던 동일한 컨테이너가 제대로 종료되지 못해서, 포트를 잡고있는 경우였다..

발생 원인은 정확하게 파악할 수 없었으나, docker-proxy 설정에서 이미 선점된 상태의 /run/containerd/containerd.sock 을 재사용 하게 됨으로써 발생되는 현상으로 파악되었다.

 

더 공부해봐야겠지만, 다음처럼 진행하여 현상을 해결하였다.

1.  sudo systemctl status docker  로 포트를 선점하고 있는 프로세스 pid들을 확인한후 강제로 kill

2.  sudo systemctl stop docker

3. socket 파일 이동 (기존 것 사용못하도록)

$ cd ~
$ mkdir socket_backup
$ sudo mv /run/containerd/containerd.sock* ~/socket_backup/.

4. sudo systemctl start docker