Docker의 호스트 네트워크

LeeYulhee·2024년 11월 4일

👉 Docker의 호스트 네트워크란?


  • Docker 컨테이너가 호스트 시스템의 네트워크 스택을 직접 사용하도록 하는 네트워크 모드
    • ❓ 호스트 시스템이란
      • Docker를 실행하는 실제 물리적 컴퓨터나 가상 머신
    • 정리하자면, 호스트 시스템의 네트워크 인터페이스를 컨테이너와 공유하는 네트워크 모드
  • 이를 통해 컨테이너는 호스트와 동일한 네트워크 인터페이스와 IP 주소를 가지게 되며, 별도의 가상 네트워크 인터페이스를 생성하지 않음



👉 Docker 호스트 네트워크의 특징


  • 컨테이너가 독립된 IP 주소를 사용하지 않고, 호스트와 같은 네트워크를 공유
    • localhost나 127.0.0.1로 접근 시 호스트 시스템으로 직접 연결됨
    • 이미 호스트에서 사용 중인 포트들이 있기 때문에 포트 충돌이 일어날 수 있음
  • 가상 네트워크 인터페이스 없이 호스트의 네트워크 스택을 그대로 사용하기 때문에 브릿지 네트워크보다 지연이 적고 성능이 높아질 수 있음
  • 컨테이너가 호스트 네트워크와 동일한 환경을 사용하기 때문에, 외부 접근을 차단하거나 제한하는 격리 수준이 브릿지 네트워크보다 낮음



👉 사용 예시


  • 호스트 네트워크 모드를 사용하는 명령어
    docker run --network host 컨테이너이름
    • 이 명령어로 호스트 네트워크 모드에서 컨테이너를 실행하고, 네트워크 인터페이스를 호스트와 공유



👉 Docker 호스트 네트워크와 브릿지 네트워크 사용 시 주의점


  • Docker에서 브릿지 네트워크와 호스트 네트워크는 동시에 설정 불가
    • 각 컨테이너는 하나의 네트워크 모드만 사용할 수 있기 때문

  • 여러 브릿지 네트워크 연결하는 방법
    docker network connect <network_name> <container_name>
    • Docker에서는 한 컨테이너를 여러 브릿지 네트워크에 연결할 수 있음
    • 이를 통해 각 브릿지 네트워크에서 컨테이너가 서로 다른 서브넷으로 연결되고, 필요에 따라 네트워크 간 통신을 설정할 수 있음

  • 브릿지 네트워크와 호스트 네트워크의 연결 방법
    • 일부 컨테이너를 브릿지 네트워크에, 다른 컨테이너를 호스트 네트워크에 연결하여 이들이 서로 통신하도록 설정할 수 있음
    • 브릿지 네트워크에 연결된 컨테이너가 호스트 네트워크의 컨테이너나 서비스를 외부 포트를 통해 접근하는 식으로 구성
    • 대표적인 예시가 NPM 등을 통해 리버스 프록시(역방향 프록시)를 설정하는 것
      • NPM을 호스트 네트워크에 연결하면, 외부에서 들어오는 트래픽을 직접 처리할 수 있음
      • NPM은 localhost와 호스트의 공용 IP 주소를 통해 접근 가능한 상태가 되며, 외부 요청을 받아 특정 포트로 전달할 수 있음
      • 애플리케이션 컨테이너들은 브릿지 네트워크에 연결되어 서로 격리된 상태를 유지하며 독립적인 IP를 가짐
      • NPM이 이러한 컨테이너들의 IP와 포트를 알고 있다면, 외부에서 들어오는 요청을 적절한 컨테이너로 전달할 수 있음



👉 Docker 호스트 네트워크와 브릿지 네트워크 비교


특징호스트 네트워크브릿지 네트워크
네트워크 인터페이스호스트의 네트워크 인터페이스를 공유하여 가상 네트워크를 생성하지 않음Docker가 가상 네트워크를 생성하여 컨테이너에 별도의 IP 주소 할당
네트워크 지연가상 네트워크가 없으므로 지연이 적고 성능이 더 높을 수 있음가상 네트워크 사용으로 인해 지연이 다소 증가할 수 있음
IP 주소컨테이너가 호스트와 동일한 IP 주소를 사용컨테이너마다 고유한 IP 주소가 부여되어 호스트와 분리된 네트워크 환경을 구성
포트 사용호스트와 동일한 포트를 사용하므로 포트 충돌 가능성이 있음포트 겹침 없이 컨테이너 간 독립적으로 포트를 지정할 수 있어 충돌 가능성 낮음
보안 격리네트워크 격리가 낮아 외부 접근 시 보안 설정이 더 까다로울 수 있음가상 네트워크에 의해 격리된 상태로 보안성이 더 높고 외부 접근 제어가 쉬움
구성 및 사용 사례단일 호스트 개발 환경이나 로컬에서 빠른 테스트에 유용멀티 호스트 환경, 클러스터 구성 등 분산된 환경에서도 쉽게 사용 가능
네트워크 모드 동시 사용다른 네트워크 모드와 동시에 사용할 수 없음브릿지 네트워크 간 연결이 가능하며, 다른 네트워크 모드와도 조합하여 사용 가능
적용 사례로컬에서 호스트 네트워크 자원에 직접 접근해야 하는 경우, 고성능이 필요한 경우격리된 네트워크 환경이 필요한 다중 서비스 애플리케이션, 클러스터링된 환경
profile
끝없이 성장하고자 하는 백엔드 개발자입니다.

0개의 댓글