도커에서 ports are not available 나올 때.

programming

by saintdragon2


Posted on Jan. 17, 2021, 2:20 p.m.


Do It! 장고 + 부트스트랩 이라는 책을 썼다.

책 내용을 따라서 이리저리 테스트하고 있는데, 도커로 장고 프로젝트를 up 하려고 하자, 아래와 같은 에러가 발생했다.

C:\github\sungyong_com (main -> origin)

λ docker-compose -f docker-compose.dev.yml up

Creating network "sungyong_com_default" with the default driver

Creating sungyong_com_db_1 ... done

Creating sungyong_com_web_1 ... error

ERROR: for sungyong_com_web_1 Cannot start service web: Ports are not available: listen tcp 0.0.0.0:8000: bind: An attempt was made to access a socket in a way forbidden by its access permissions.

ERROR: for web Cannot start service web: Ports are not available: listen tcp 0.0.0.0:8000: bind: An attempt was made to access a socket in a way forbidden by its access permissions.

ERROR: Encountered errors while bringing up the project.

어떻게 해결해야 하는지 몰라서 검색을 많이 해봤더니, Jihoon Park이라는 분이 쓴 "Ports are not available: listen tcp 0.0.0.0:3000: bind: An attempt was made to access a socket in a way forbidden by its access permissions."이라는 글을 찾았다.

이런 문제가 발생하는 이유는 이미 8000포트가 다른 이유로 사용이 금지되어 있기 때문이다. netsh interface ipv4 show excludedportrange protocol=tcp로 현재 사용이 금지된 port를 볼 수 있다.

C:\github\sungyong_com (main -> origin)

λ netsh interface ipv4 show excludedportrange protocol=tcp

프로토콜 tcp 포트 제외 범위

시작 포트 끝 포트

---------- --------

  1138        1237

  2180        2279

  7609        7708

  7709        7808

  7910        8009

  8010        8109

  8122        8221

  8222        8321

  9338        9437

  9438        9537

  9705        9705

 50000       50059     *
    • 관리 포트 제외입니다.

Jihoon Park이라는 분이 쓴 "Ports are not available: listen tcp 0.0.0.0:3000: bind: An attempt was made to access a socket in a way forbidden by its access permissions."이라는 글를 보면, "port 사용 제한을 풀어서 해결할 수도 있지만, 금지된 나름의 이유가 있을테니, 복잡하게 다 따져보기보다는 허용된 포트로 옮겨서 하기로 했다"는 내용이 있다. 나 역시 그 말에 동의했기 때문에, docker-compose.dev.yml 파일을 제한되지 않은 포트로 바꿔서 다시 실행시켰다. 그랬더니 잘 된다.


#programming #django #도커
Leave a Comment: