docker 내부 포트 충돌을 위한 도커 네트워크 설정 #991
nayonsoso
started this conversation in
[BE] 트러블 슈팅
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
문제 원인
nginx 와 app 는 host 네트워크를 사용하는데, 이들 모두 5959 를 listen 하므로 충돌이 발생했다.
임시 방편으로 nginx 를 5555로 설정할 수는 있으나,
nginx 가 사라진다면 prometheus 같은 설정은 다시 5555 → 5959 로 바꿔야 할 것이다🤧
이런 일을 막기 위해서,
할 수 있는 방법을 찾을 필요가 있었다.
또한 포트 충돌이라는 문제 상황 때문만이 아니라,
컨테이너를 활용해 호스트 인스턴스와 완벽한 격리를 이루는 것이 목표인 도커의 본질을 생각해봐도
컨테이너가 host 네트워크를 사용하는 것은 지양할 필요가 있다.
(사실 지금까지는 설정이 간편하다는 이유로 별 생각 없이 host로 했었는데,.. 반성한다..😓)
문제 해결 과정
그렇다면 어떻게 네트워크 설정을 할 것인가? 두가지 선택지가 있다.
nginx → app 의 통신을 위해서 app 의 docker_ip 를 사용하거나, DNS 를 등록해야 한다.
이때 DNS를 하더라도 고정적인 ip 임이 보장이 되어야 하므로, 아래와 같은 부분들이 추가되어야 한다.
nginx 와 app 이 같은 커스텀 네트워크를 사용한다면,
커스텀 네트워크에서는 DNS가 가능하므로 컨테이너 이름으로 통신이 가능하다.
그리고 host → nginx 의 통신을 위해서는 nginx 컨테이너와 host 의 포트를 매핑하면 된다.
Beta Was this translation helpful? Give feedback.
All reactions