[개발 일기] 2025.01.01 - 도커 컨테이너 네트워크 (Feat : ports)

2025. 1. 1. 22:31·개발 일기

개요

 

SSAFY 시절부터 docker-compose를 작성할 때, 저 ports가 뭘 의미하는지 항상 궁금했다.

 

 

검색해서 찾아보면 대부분 “호스트 포트:컨테이너 포트” 이런식으로 외웠다.

 

 

그런데 이런 식으로 단순하게 외우니까 저 포트를 볼 때마다 늘 까먹어서 제대로 공부해봤다.

 

 

 

호스트 포트와 도커 컨테이너 포트

 

위의 그림으로 확실하게 설명 가능하다.

 

 

사용자가 호스트의 특정 포트로 요청을 보내면, 해당 포트와 바인딩되어 있는 컨테이너를 찾은 뒤 해당 컨테이너에 요청을 전달하는 것이다.

 

 

위의 이미지는 도커 컨테이너를 실행시킨 뒤, 내부 네트워크를 확인한 로그이다. 노란색 네모를 보면 각각의 컨테이너가 서로 다른 IP를 사용중인 것을 알 수 있다.

 

 

호스트 포트는 내가 사용중인 로컬의 포트번호를 의미한다. 그렇기 때문에 겹치는 포트가 있으면 안된다.

 

 

위의 이미지처럼 eureka-service와 test-service1을 같은 호스트 포트로 설정한 뒤, 컨테이너를 실행하면 포트 번호가 이미 사용중이라는 에러가 발생한다.

 

 

하지만 도커 컨테이너 포트는 겹쳐도 상관없다. 왜냐하면 각각의 컨테이너는 서로 다른 IP를 사용하기 때문이다.

 

 

이렇게 test-service1 컨테이너와 test-service2 컨테이너의 컨테이너 포트를 같은 8080포트로 설정한 뒤 컨테이너를 실행하면 정상적으로 동작한다.

 

쉽게 이해하자면 test-service1 컨테이너의 Spring 서버는 192.168.70.1:8080 에서 실행된 것이고, test-service2 컨테이너의 Spring 서버는 192.168.70.2:8080 에서 실행된 것이다.

 

 

 

도커 컨테이너 네트워크 특징

 

  • 각각의 컨테이너는 독립적인 IP를 사용하기 때문에 다른 컨테이너와 포트번호가 겹처도 상관없다.
  • 그런데 또 굳이 겹치게 할 필요는 없을듯하다..
  • 도커 컨테이너의 네트워크 기본값은 bridge 방식이기 때문에 기본적으로 하나의 호스트 내부에 있는 컨테이너는 서로 통신이 가능하다.

'개발 일기' 카테고리의 다른 글

[개발 일기] 2025.01.06 - OSI 7계층 (물리 계층)  (0) 2025.01.06
[개발 일기] 2025.01.05 - 자바 객체 락 (synchronized)  (0) 2025.01.05
[개발 일기] 2025.01.04 - Event, Publisher, Listener  (0) 2025.01.04
[개발 일기] 2025.01.03 - Redis의 만료기한  (0) 2025.01.03
[개발 일기] 2025.01.02 - @Transactional (readOnly = true)  (0) 2025.01.02
'개발 일기' 카테고리의 다른 글
  • [개발 일기] 2025.01.05 - 자바 객체 락 (synchronized)
  • [개발 일기] 2025.01.04 - Event, Publisher, Listener
  • [개발 일기] 2025.01.03 - Redis의 만료기한
  • [개발 일기] 2025.01.02 - @Transactional (readOnly = true)
오도형석
오도형석
  • 오도형석
    형석이의 성장일기
    오도형석
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • MSA 모니터링 서비스
        • DB
      • 스파르타 코딩클럽
        • SQL
        • Spring
      • 백엔드
        • Internet
        • Java
        • DB
      • 캡스톤
        • Django
        • 자연어처리
      • Spring
        • JPA
        • MSA
      • ETC
        • ERROR
      • 개발 일기 N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 인기 글

  • 태그

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
오도형석
[개발 일기] 2025.01.01 - 도커 컨테이너 네트워크 (Feat : ports)
상단으로

티스토리툴바