헤르메스 LIFE

[Docker] 포트가 사용중인 경우 해결방법 본문

Exception

[Docker] 포트가 사용중인 경우 해결방법

헤르메스의날개 2023. 7. 25. 23:49
728x90

Docker 에 Oracle XE 를 설치 하였습니다. 평소에는 사용할 일이 없지만, 테스트용으로 간간이 사용합니다.

이번에도 테스트를 위해  Oracle Docker 서버를 시작했는데, 아래와 같은 오류가 발생했습니다.

Error invoking remote method 'docker-start-container': 
Error: (HTTP code 500) server error - Ports are not available: exposing port TCP 0.0.0.0:1521 -> 0.0.0.0:0: listen tcp 0.0.0.0:1521: 
bind: An attempt was made to access a socket in a way forbidden by its access permissions.

대략봐도 포트번호를 누군가가 사용하고 있다는 메시지로 보여집니다.


보통의 경우 사용되는 경우가 대부분이긴 합니다.

이 경우는 아래와 같은 구문으로 찾을 수 있습니다.

$ netstat -ano | findstr ":3306"

그런데, 실제 포트가 사용되지 않는데도 포트를 사용할 수 없다고 오류가 발생하는 경우가 있습니다.

이럴 때는 시스템에서 사용자가 쓰지 못하도록 점유되어 경우입니다.

 powershell 을 관리자로 실행 해서 아래와 같이 실행합니다.

PS C:\> netsh interface ipv4 show excludedportrange protocol=tcp

프로토콜 tcp 포트 제외 범위

시작 포트    끝 포트
----------    --------
      1053        1152
      1196        1295
      1296        1395
      1396        1495
      1496        1595
      1596        1695
      1712        1811
      2869        2869
      8708        8807
     27339       27339
     50000       50059     *

* - 관리 포트 제외입니다.

* 표시는 점유되어 있지 않다는 표시 입니다.

점유되지 않는 포트로 할당을 하고 싶은 경우 아래와 같이 실행하면 됩니다.

PS C:\> netsh int ipv4 delete excludedportrange protocol=tcp startport=1496 numberofports=100
액세스가 거부되었습니다.

안되는 경우 아래와 같이 하면 됩니다. ( 점유된 포트를 전부 초기화 해버립니다. ㅎㅎ )

PS C:\> net stop winnat

Windows NAT Driver 서비스를 잘 멈추었습니다.

PS C:\> net start winnat

Windows NAT Driver 서비스가 잘 시작되었습니다.

PS C:\> netsh interface ipv4 show excludedportrange protocol=tcp

프로토콜 tcp 포트 제외 범위

시작 포트    끝 포트
----------    --------
      2869        2869
     27339       27339
     50000       50059     *

* - 관리 포트 제외입니다.

그리고 이제 원하는 포트를 예외 처리합니다.

-- oracle port
netsh int ipv4 add excludedportrange protocol=tcp startport=1521 numberofports=1 store=persistent
-- postgress port
netsh int ipv4 add excludedportrange protocol=tcp startport=5432 numberofports=1 store=persistent
-- mysql/maria port
netsh int ipv4 add excludedportrange protocol=tcp startport=3306 numberofports=1 store=persistent

결과는 아래와 같습니다. 전부 예외 처리되었습니다.

PS C:\> netsh interface ipv4 show excludedportrange protocol=tcp

프로토콜 tcp 포트 제외 범위

시작 포트    끝 포트
----------    --------
      1521        1521     *
      2869        2869
      3306        3306     *
      5432        5432     *
     27339       27339
     50000       50059     *

* - 관리 포트 제외입니다.

 Oracle 이 실행되었습니다.


https://hermeslog.tistory.com/713

 

[netstat] 사용중인 포트 찾고 종료하기

C:\>netstat -? 프로토콜 통계와 현재 TCP/IP 네트워크 연결을 표시합니다. NETSTAT [-a] [-b] [-e] [-f] [-i] [-n] [-o] [-p proto] [-r] [-s] [-t] [-x] [-y] [interval] -a 모든 연결 및 수신 대기 포트를 표시합니다. -b 각 연

hermeslog.tistory.com

 

728x90