소리소문 없이... 사랑도 명예도 이름도 남김 없이...
DexCore.net

Docker

[Docker] 도커 네트워크 구조

탑~! 2025. 2. 19. 10:20

[참고 사이트]​

- [Docker] Network, 호스트와 컨테이너의 구조

1. 도커 네트워크 구조

도커 네트워크는 Host, Bridge, Container의 관계이다. 가정 홈 네트워크와 비교하면 더 쉽게 이해할 수 있다. Internet을 여러 장비가 사용하기 위해서는 공유기가 필요하다.

  • eth0

실제 IP가 할당되는 host 네트워크 인터페이스이다. 가정에 제공되는 Internet은 공유기를 통해 다른 장비와 연결된다.

  • docker0

도커가 설치될 때, 기본적으로 구성되는 브리지이다. host 네트워크와 container의 연결을 해주는 역할을 한다. host 네트워크의 제한된 IP를 여러 Container에 공유하는 공유기의 역할을 한다.

  • veth

Container 내부와 연결해 주는 역할을 하는 가상 인터페이스이다. Container가 생성되는 동시에 veth가 생성되며, eth0과 연결되어 외부와의 통신이 가능해 진다. 리눅스의 Virtual Ethernet Interface 을 의미한다.

Internet은 공유기를 통해 나의 맥북에 eth0으로 연결되고, eth0는 docker0에 연결되어 Container와 연결된다.

2. 도커 네트워크 드라이버

(1) 도커 네트워크 종류

도커 네트워크 드라이버는 Native 드라이버와 Remote 드라이버로 나눈다.

  • Native Drivers -> Bridge, Host, None, Overlay를 사용.
  • Remote Drivers -> 써드파티 드라이버로 외부에서 잘 만들어진 드라이버를 사용.

(2) 네트워크 동작 방식에 따라 드라이버 분류

위 그림은 네트워크 드라이버를 단일 호스트, 다중 호스트로 분류를 한 그림이다.

네트워크 드라이버는 단일 호스트에서 동작하는 네트워킹, 다중 호스트에서 동작하는 네트워킹이 있다.

  • 단일 호스트 네트워크 드라이버 -> Bridge, Host, None 네트워크
  • 다중 호스트 네트워크 드라이버 -> Overlay 네트워크

3. 도커 네트워크 드라이버 장단점

(1) Bridge 네트워크

가장 기본적이고 많이 사용되는 도커 네트워크 유형이다. 가상 네트워크를 만들어 컨테이너를 서로 연결하고 각 컨테이너는 네트워크 내에서 고유한 IP 주소를 할당받아 외부와의 통신을 허용한다. Docker의 관점에서 Bridge 네트워크는 동일한 Bridge 네트워크에 연결된 컨테이너가 통신할 수 있도록 하는 동시에 해당 Bridge 네트워크에 연결되지 않은 컨테이너로부터 격리를 제공하는 소프트웨어 Bridge를 사용한다. Docker를 시작하면 Bridge가 자동으로 생성되고, 별도로 지정하지 않으면 컨테이너의 기본 네트워크가 된다.

[장점]

  • 사용 편의성이 뛰어나고 설정이 간단하다.
  • 여러 컨테이너 간 통신에 효과적이다.
  • 네트워크 이름 기반의 명확한 식별 방식을 제공한다.

[단점]

  • 여러 네트워크를 관리해야 할 경우 복잡성이 증가할 수 있다.
  • 네트워크 이름 충돌 문제가 발생할 수 있다.

(2) Host 네트워크

컨테이너가 Host 시스템의 네트워크 네임스페이스와 동일한 네트워크에 속하여, Host 시스템과 동일한 IP 주소를 사용하며, 서로 직접 통신할 수 있다.

[장점]

  • 설정이 매우 간편하다.
  • 컨테이너가 호스트 시스템의 다른 프로세스와 쉽게 통신할 수 있도록 한다.
  • 성능이 빠르다.

[단점]

  • 네트워크 격리가 불가능하다.
  • 보안 위험이 증가한다.
  • 호스트 시스템의 네임스페이스를 변경할 수 있다.

[사용 사례]

  • 호스트 시스템과 긴밀하게 통합되어야 하는 컨테이너
  • 신뢰할 수 있는 개발 환경
  • 성능이 중요한 시나리오

(3) None 네트워크

네트워크 기능을 제공하지 않는 가벼운 네트워크 유형이다.

컨테이너는 서로 직접 통신할 수 없으며, 외부 네트워크에 액세스할 수도 없다.

[장점]

  • 리소스 사용량이 매우 적다.
  • 네트워크 보안을 강화한다.
  • 분리된 작업 공간을 제공한다.

[단점]

  • 컨테이너 간 통신이 불가능하다.
  • 외부 네트워크 액세스가 불가능하다.
  • 사용 상황이 제한적이다.

[사용 사례]

  • 민감한 데이터를 처리하는 컨테이너
  • 네트워크 격리가 필수적인 시나리오
  • 임시 작업 공간

(4) Container 네트워크

하나의 컨테이너의 네트워크 네임스페이스를 다른 컨테이너에 연결하여 서로 직접 통신할 수 있다.

하지만, 외부 네트워크에는 액세스할 수 없다.

[장점]

  • 강력한 네트워크 격리를 제공한다.
  • 특정 컨테이너 그룹 간의 통신을 제어할 수 있다.
  • 유연한 네트워킹 구성이 가능하다.

[단점]

  • 설정이 다소 복잡할 수 있다.
  • 여러 컨테이너를 연결해야 할 경우 관리가 어려울 수 있다.

[사용 사례]

  • 바인딩된 컨테이너의 테스트를 하는 경우 유용하다.

(5) Overlay 네트워크

Overlay 네트워크는 여러 Docker 데몬 호스트 간에 분산 네트워크를 생성한다.

[장점]

  • 여러 호스트에 분산된 컨테이너의 통신을 가능하게 한다.
  • 확장성 : 네트워크 인프라를 확장할 수 있다.
  • 유연성 : 다양한 네트워크 레이어를 도입하여 연연하게 구성 및 관리를 할 수 있다.

[단점]

  • 복잡성 : 기존 브릿지 네트워크에 비해 설정 및 관리가 복잡하다.
  • 성능 : 추가적인 네트워크 레이어를 도입하여 성능 저하가 발생할 수 있다.
  • 호환성 : 모든 네트워킹 환경과 호환되지 않아 추가적인 해결 작업이 필요할 수 있다.

[사용 사례]

  • 마이크로서비스 아키텍처 : MSA에서 컨테이너 간 통신 및 네트워크 격리를 지원한다.
  • 멀리 클라우드 환경 : 여러 클라우드 환경에 분산 배포하고 통신하도록 지원가능하다.

 

출처 : https://blog.naver.com/islove8587/223441374772

728x90
반응형