Docker / / 2024. 12. 4. 16:44

Docker 컨테이너 네트워킹

Docker 컨테이너 네트워킹

Docker 컨테이너 네트워킹은 컨테이너들이 서로, 호스트 시스템, 외부 네트워크와 통신할 수 있도록 하는 핵심 기능입니다. Docker는 다양한 네트워킹 옵션을 제공하여 애플리케이션 개발, 테스트, 배포와 같은 다양한 사용 사례를 지원합니다.


Docker 네트워킹 소개

Docker 네트워킹은 컨테이너가 서로, 호스트 시스템 및 외부 네트워크와 통신할 수 있도록 합니다. 이를 통해 다음과 같은 기능을 수행할 수 있습니다:

  • 단일 네트워크 네임스페이스 공유
  • 독립적 또는 상호 연결된 네트워크 사용
  • 외부 세계에 서비스를 노출

Docker는 libnetwork 라이브러리를 사용하여 네트워크를 관리하며 유연성과 확장성을 제공합니다.


Docker 네트워크 모드

1. 브리지 네트워크 (기본값)

  • 설명: Docker 컨테이너의 기본 네트워크 모드입니다. 동일한 브리지 네트워크에 있는 컨테이너끼리는 서로 통신할 수 있습니다.
  • 사용 사례: 단일 호스트 배포에서 컨테이너 간 로컬 통신이 필요한 경우
  • 설정:
  • docker network create my_bridge_network docker run --network=my_bridge_network ...

2. 호스트 네트워크

  • 설명: 컨테이너가 호스트의 네트워크 네임스페이스를 공유하여 호스트의 IP와 포트를 직접 사용합니다.
  • 사용 사례: 성능이 중요한 애플리케이션에서 저지연 통신이 필요한 경우
  • 설정:
  • docker run --network=host ...

3. None 네트워크

  • 설명: 컨테이너에 네트워크를 할당하지 않습니다. 완전히 격리된 상태가 됩니다.
  • 사용 사례: 보안이 중요한 애플리케이션에서 사용
  • 설정:
  • docker run --network=none ...

4. 오버레이 네트워크

  • 설명: 여러 Docker 호스트에 걸쳐 있는 네트워크로, Docker Swarm이나 Kubernetes 환경에서 사용됩니다.
  • 사용 사례: 분산 애플리케이션에서 컨테이너 간 통신
  • 설정:
  • docker network create --driver=overlay my_overlay_network docker service create --network=my_overlay_network ...

5. Macvlan 네트워크

  • 설명: 컨테이너에 MAC 주소를 할당하여 물리적 네트워크 디바이스처럼 동작하도록 합니다.
  • 사용 사례: 컨테이너가 호스트의 물리적 네트워크에 직접 접근해야 할 때
  • 설정:
  • docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=eth0 my_macvlan_network docker run --network=my_macvlan_network ...

컨테이너 간 통신

동일한 네트워크에서 통신

같은 네트워크에 있는 컨테이너끼리는 컨테이너 이름을 DNS로 사용하여 통신할 수 있습니다.

다른 네트워크 간 통신

다른 네트워크에 있는 컨테이너 간 통신은 포트를 노출하거나 네트워크를 연결하는 추가 설정이 필요합니다.


네트워크 명령어

네트워크 목록 보기

docker network ls

네트워크 상세 정보 보기

docker network inspect <network_name>

네트워크 생성

docker network create <network_name>

컨테이너를 네트워크에 연결

docker network connect <network_name> <container_name>

컨테이너를 네트워크에서 분리

docker network disconnect <network_name> <container_name>

사용 사례

  1. 브리지 네트워크:
    • 로컬 테스트 환경
    • 단일 호스트 애플리케이션
  2. 오버레이 네트워크:
    • Docker Swarm 또는 Kubernetes의 마이크로서비스
  3. 호스트 네트워크:
    • 성능이 중요한 서비스 (예: 모니터링 도구)

베스트 프랙티스

  • 애플리케이션 요구사항에 따라 적절한 네트워크 모드를 선택하세요.
  • 방화벽과 액세스 제어를 통해 네트워크를 보호하세요.
  • Docker 플러그인이나 외부 도구를 사용해 네트워크 트래픽을 모니터링하고 감사하세요.

결론

Docker 컨테이너 네트워킹은 컨테이너화된 애플리케이션의 배포를 간소화하는 강력한 기능입니다. Docker의 네트워킹 기능을 이해하고 활용하면 안정적이고 확장 가능하며 안전한 애플리케이션을 구축할 수 있습니다.


참고 자료


서브넷 주소와 IP 범위 설정에 대한 이해

Docker 네트워크에서 서브넷 주소와 IP 범위를 설정할 때, 서브넷 마스크와 IP 주소의 의미를 정확히 이해하는 것이 중요합니다. 여기서는 서브넷 주소 10.0.42.0/24와 IP 범위 설정 10.0.42.128/25에 대해 자세히 설명합니다.


서브넷 주소 10.0.42.0/24

  • /24는 서브넷 마스크가 255.255.255.0임을 의미합니다.
  • 이 서브넷에서는 총 256개의 IP 주소를 사용할 수 있습니다:
    • IP 범위: 10.0.42.0 ~ 10.0.42.255
    • 네트워크 주소: 10.0.42.0 (첫 번째 IP)
    • 브로드캐스트 주소: 10.0.42.255 (마지막 IP)
    • 할당 가능한 IP 주소 범위: 10.0.42.1 ~ 10.0.42.254

IP 범위 설정 10.0.42.128/25

  • /25는 서브넷 마스크가 255.255.255.128임을 의미합니다.
  • 이는 128개의 IP 주소로 서브넷을 나누는 설정입니다.

/25로 나뉘는 서브넷의 구성

  1. 첫 번째 서브넷:

    • 네트워크 주소: 10.0.42.0
    • 브로드캐스트 주소: 10.0.42.127
    • 할당 가능한 IP 주소 범위: 10.0.42.1 ~ 10.0.42.126
  2. 두 번째 서브넷:

    • 네트워크 주소: 10.0.42.128
    • 브로드캐스트 주소: 10.0.42.255
    • 할당 가능한 IP 주소 범위: 10.0.42.129 ~ 10.0.42.254

10.0.42.128/25인가?

  • 10.0.42.128/25 서브넷으로 나뉘었을 때 두 번째 서브넷의 시작 네트워크 주소입니다.
  • 따라서, 10.0.42.128/25두 번째 서브넷을 정확히 지정하기 위한 설정입니다.

요약

  • 서브넷 10.0.42.0/24256개의 IP 주소를 포함하며, 이를 /25 서브넷으로 나누면 다음과 같이 구성됩니다:

    • 첫 번째 서브넷: 10.0.42.0/25 (네트워크 주소: 10.0.42.0)
    • 두 번째 서브넷: 10.0.42.128/25 (네트워크 주소: 10.0.42.128)
  • 10.0.42.128/25는 두 번째 서브넷의 시작점을 나타내며, 할당 가능한 IP 주소 범위는 10.0.42.129 ~ 10.0.42.254입니다.


참고 자료

'Docker' 카테고리의 다른 글

Docker in Action Chapter 2  (1) 2024.12.09
Docker in Action Chapter 1  (0) 2024.12.09
도커 볼륨 (Docker Volumes)  (1) 2024.12.04
Surface Area  (0) 2024.12.04
Docker 이미지 레이어  (0) 2024.12.04
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유