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>
사용 사례
- 브리지 네트워크:
- 로컬 테스트 환경
- 단일 호스트 애플리케이션
- 오버레이 네트워크:
- Docker Swarm 또는 Kubernetes의 마이크로서비스
- 호스트 네트워크:
- 성능이 중요한 서비스 (예: 모니터링 도구)
베스트 프랙티스
- 애플리케이션 요구사항에 따라 적절한 네트워크 모드를 선택하세요.
- 방화벽과 액세스 제어를 통해 네트워크를 보호하세요.
- Docker 플러그인이나 외부 도구를 사용해 네트워크 트래픽을 모니터링하고 감사하세요.
결론
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 범위:
IP 범위 설정 10.0.42.128/25
/25
는 서브넷 마스크가255.255.255.128
임을 의미합니다.- 이는 128개의 IP 주소로 서브넷을 나누는 설정입니다.
/25
로 나뉘는 서브넷의 구성
첫 번째 서브넷:
- 네트워크 주소:
10.0.42.0
- 브로드캐스트 주소:
10.0.42.127
- 할당 가능한 IP 주소 범위:
10.0.42.1
~10.0.42.126
- 네트워크 주소:
두 번째 서브넷:
- 네트워크 주소:
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/24
는 256개의 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 |