카테고리 없음
Docker Network
김 정출
2024. 10. 18. 23:21
Docker Network
- Docker 네트워크는 컨테이너들이 서로 통신하고 외부 네트워크와 연결될 수 있도록 해주는 Docker의 중요한 기능 중 하나입니다.
- Docker는 다양한 네트워크 드라이버를 제공하여 각기 다른 네트워크 요구 사항을 충족할 수 있도록 합니다. Docker 네트워크에 대한 주요 개념을 살펴보겠습니다.
Docker 네트워크 드라이버
Docker는 기본적으로 여러 네트워크 드라이버를 지원하며, 각 드라이버는 다른 방식으로 네트워크를 구성합니다.
- bridge (브리지) 네트워크:
- Docker의 기본 네트워크 모드입니다.
- 동일한 호스트에서 실행되는 여러 컨테이너가 서로 통신할 수 있도록 합니다.
- 외부 네트워크와의 통신은 NAT(Network Address Translation)를 통해 가능하며, 각 컨테이너는 고유한 IP 주소를 갖습니다.
- host (호스트) 네트워크:
- 컨테이너가 호스트의 네트워크와 직접적으로 통신하도록 설정합니다.
- 성능이 중요한 경우에 사용되며, 컨테이너는 별도의 네트워크 인터페이스 없이 호스트의 IP와 포트를 사용합니다.
- 격리 수준이 낮아 보안적인 측면에서 주의가 필요합니다.
- none (네트워크 없음):
- 컨테이너에 네트워크 인터페이스를 제공하지 않는 옵션입니다.
- 네트워크가 필요 없는 작업(예: 순수 계산 작업)이나 매우 제한된 네트워크 환경에서 사용될 수 있습니다.
- overlay (오버레이) 네트워크:
- 여러 호스트에 걸쳐 있는 컨테이너들이 네트워크를 통해 통신할 수 있도록 합니다.
- Swarm 모드 또는 Kubernetes와 같은 오케스트레이션 도구와 함께 사용됩니다.
- VXLAN(virtual extensible LAN)과 같은 기술을 이용하여 분산 환경에서 컨테이너 간 통신을 지원합니다.
- macvlan 네트워크:
- 각 컨테이너가 네트워크 상에서 고유한 MAC 주소를 가지도록 설정합니다.
- 컨테이너가 물리적 네트워크 인터페이스와 직접적으로 연결되어야 하는 경우 유용합니다.
- 복잡한 네트워크 구성을 할 때 사용됩니다.
Docker 네트워크 관련 명령어
- docker network ls: 현재 Docker에서 사용 가능한 네트워크 목록을 표시합니다.
- docker network create <네트워크 이름>: 새 네트워크를 생성합니다.
- docker network inspect <네트워크 이름>: 네트워크의 세부 정보를 확인할 수 있습니다.
- docker network connect <네트워크 이름> <컨테이너>: 특정 네트워크에 컨테이너를 연결합니다.
- docker network disconnect <네트워크 이름> <컨테이너>: 특정 네트워크에서 컨테이너를 분리합니다.
컨테이너 간 통신
컨테이너 간 통신은 기본적으로 같은 네트워크에 연결되어 있을 때 가능합니다. 예를 들어, 같은 브리지 네트워크에 속한 컨테이너들은 서로의 IP 주소로 통신할 수 있습니다. 하지만 서로 다른 네트워크에 있는 컨테이너들 간에는 기본적으로 통신이 불가능하며, 이를 위해서는 네트워크를 연결하거나, 별도의 라우팅 설정이 필요합니다.
사용 사례
- 개발 환경: 브리지 네트워크를 사용하여 로컬에서 여러 컨테이너를 실행하고 서로 통신하게 할 수 있습니다.
- 프로덕션 환경: 오버레이 네트워크를 사용하여 분산된 여러 호스트에서 실행되는 컨테이너 간의 안전하고 확장 가능한 통신을 구현할 수 있습니다.
- 고성능 네트워킹: 호스트 네트워크 모드를 사용하여 네트워크 성능의 병목을 피할 수 있습니다.
이 외에도 Docker 네트워크를 통해 고급 네트워크 토폴로지 구성이나 컨테이너와 외부 서비스 간의 통신을 설정할 수 있습니다. 네트워크 옵션을 적절히 선택하면, 컨테이너 기반 애플리케이션의 성능과 보안을 강화할 수 있습니다.