본문 바로가기

백엔드

[Docker] Docker 포트 충돌의 문제

! Error message !

상황: mysql 서버를 설정해두고 이를 위하여 연결하고 있었는데 오류가 뜸

 

docker: Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:3306 -> 0.0.0.0:0: listen tcp4 0.0.0.0:3306: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.

 

 

이러면 포트 충돌의 문제가 일어나고 있는 것이므로,

포트 3306을 쓰고 있는 프로세스를 확인해본다

 

 

명령어

netstat -ano | findstr 3306

 

 

실행 결과 

 TCP    0.0.0.0:3306           0.0.0.0:0              LISTENING       5256
  TCP    [::]:3306              [::]:0                 LISTENING       5256

PID가 5256인 프로세스가 현재 3306을 쓰고 있어서 충돌이 일어나는 것임을 알 수 있다.

 

PID가 5256인 프로세스를 확인

tasklist | findstr 5256

 

확인해본 결과 

mysqld.exe 가 3306 포트를 쓰고 있어 충돌이 일어남을 확인

 

이에 대한 방법을 2가지 사용할 수 있다.

 

 

 

1. 다른 포트 강제 종료 시키기

taskkill /pid 5256 /f

 

이러면 포트 충돌 해결

 

2. 도커 컨테이너에 다른 포트를 부여하기

docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=mysql -d -p 3307:3306 mysql:latest

위와 같이 -p 명령어를 통하여 포트를 변경하였다