도커 네트워크 브릿지(Docker Network Bridge) 알아보기

사용자 정의 브릿지(User-Defined Bridge)를 사용해야만 하는 이유!

09 Aug 2019 by 코마 (gbkim1988@gmail.com)

안녕하세요 코마입니다. 오늘은 도커의 브릿지 네트워크에 대해서 알아보도록 하겠습니다. 😺

개요

이 글을 통해서 여러분은 브릿지란 무엇인지 그리고 네트워크 분야와 도커 영역에서의 브릿지가 가지는 차이점에 대해서 이해할 수 있습니다.

또한, 도커에서 브릿지를 사용할 때 주의 해야할 구성을 이해할 수 있기 때문에 기술 면접, 인터뷰, 기술 영업 등에서 유용하게 써먹을 수 있는 개념입니다.

마지막으로 도커 브릿지의 이론적인 영역과 네트워크 지식을 겸비하여 도커 가상 네트워크를 구성하는 역량을 기르는 바탕을 키울 수 있습니다.

목표

이글을 통해 여러분은 다음의 내용을 이해할 수 있게됩니다.

네트워크 분야: 브릿지

네트워크 분야에서 브리지 네트워크는 링크 계층(OSI 2 계층) 장비입니다. 즉, 네트워크 간의 통신을 포워딩(forward)하는 역할을 담당합니다. 이 브릿지는 하드웨어 장비일 수도 있고 커널 위해서 동작하는 소프트웨어 장비일 수 도 있습니다.

OSI 7계층 중 2계층

위에서 브릿지는 링크 계층이라고 이야기하였습니다. 이는 OSI 7 계층의 2 계층에 해당합니다. 대부분의 스위치가 2계층에서 동작합니다.

2계층 – 데이터 링크 계층(Data Link): 데이터 링크 계층은 (두 개의 직접 연결된 노드 사이의) 노드 간 데이터 전송을 제공하며 물리 계층의 오류 수정도 처리한다. 여기에는 2개의 부계층도 존재한다. 하나는 매체 접근 제어(MAC) 계층이고 다른 하나는 논리적 연결 제어(LLC) 계층이다. 네트워킹 세계에서 대부분 스위치는 2계층에서 작동한다. (원문 보기: CIO 코리아)

도커: 브릿지

도커에서는 가상으로 브릿지 네트워크를 구현하기 때문에 우리는 도커가 이 브릿지를 어떻게 구현하였는지를 알아야 합니다. 그리고 컨테이너들이 통신할 때 적절한 구성을 할 수 있도록 이 지식을 활용해야만 합니다.

네트워크 세그먼트 기능

도커 영역에서 브릿지 네트워크는 소프트웨어 브릿지를 사용합니다. 그리고 컨테이너들이 동일한 브릿지 네트워크에 연결되어 있다면 서로 통신할 수 있도록 하는 역할을 합니다.

그리고 만약 동일한 브릿지 네트워크에 연결되어 있지 않다면 컨테이너들은 서로 독립(Isolation)되어 연결할 수 없습니다.

도커 브릿지 드라이버는 호스트 머신에 자동으로 규칙을 설치합니다. 따라서, 서로 다른 브릿지 네트워크에 있다면 직접 통신할 수 없습니다.

브릿지 네트워크는 같은 도커 데몬 호스트에서만 적용됩니다. 서로 다른 도커 데몬 호스트들 간의 통신을 다룰 때에는 OS 레벨의 라우팅을 다루거나 Overlay 네트워크를 사용할 수 있습니다.

도커 Swarm 을 다룰 때 Overlay 네트워크를 반드시 다루어야 하니 지금은 용어에 집중해 주세요.

사용자 정의 브릿지

도커 엔진 설치 시점부터 브릿지 네트워크는 존재합니다. 이를 기본 브릿지라고 부릅니다. 그러나 도커 문서는 이것을 사용하는 것을 권장하지 않습니다. 즉, 새로운 브릿지를 만들어 사용할 것을 말합니다. 이를 사용자 정의 브릿지라고 합니다.

그렇다면 각각은 무슨 차이점이 있을까요?

사용자 정의 브릿지와 기본 브릿지의 5 가지 차이점

다음으로 다섯 가지의 차이점을 소개해 드리도록 하겠습니다.

1. 사용자 정의 브릿지는 컨테이너들에게 더 나은 독립성과 상호 작용성을 제공

사용자 정의 브릿지에 연결된 컨테이너들은 상호간에 모든 포트가 열려져 있으나 외부에는 포트를 노출하지 않습니다.

이러한 특성은 컨테이너화된 어플리케이션(웹, DB)들이 서로 통신을 하는데 있어 매우 수월합니다. 또한 외부로 포트를 오픈하지 않으므로 더욱 안전합니다.

1-1. 웹 어플리케이션 활용 예

웹 프론트엔드와 데이터베이스 백엔드를 가진 어플리케이션을 상상해봅시다. 외부 인터넷에서 웹 프론트 엔드를 접속하지만 백엔드에는 접속할 필요가 없습니다. 사용자 정의 브릿지를 활용하면 웹 프론트만 오픈하고 백엔드를 감추는 전략을 사용할 수 있습니다. 이는 사용자 정의 브릿지를 통해 백엔드와 프론트간의 포트가 열려있다는 의미입니다.

만약 여러분이 어플리케이션 스택을 기본 bridge 네트워크로 사용한다고 해봅시다. 즉, 프론트의 포트와 백엔드의 포트를 동시에 -p 혹은 --publish 플래그를 통해 열어준다는 의미입니다. 따라서, 백엔드를 보호하기 위해서 도커 데몬을 구동하는 호스트 머신에서 백엔드 포트에 대한 접근 제어(access control)을 구성해 주어야 함을 의미합니다.

2. 사용자 정의 브릿지는 자동화된 DNS Resolution 을 제공

기본 브릿지 네트워크 상의 컨테이너들은 IP 주소를 통해서만 서로간의 통신이 가능합니다. –link 옵션을 사용하면 해결 할 수 있지만, 이는 곧 사라질 기능입니다. 따라서, 앞으로 사용하지 않아야될 옵션입니다.

그러나 사용자 정의 브릿지 네트워크 상에서는 컨테이너의 이름만으로 서로를 인식할 수 있습니다. 즉, automatic DNS resolution 기능이 적용된다는 의미입니다. 그렇다면 이 기능이 가지는 의미는 무엇일까요?

2-1. 웹 어플리케이션 활용 예

1-1. 웹 어플리케이션 활용 예에서 언급한 예를 다시 떠올려볼까요? 그러나 두 가지 정보가 추가로 제공됩니다. 바로 프론트 엔드와 백엔드의 컨테이너 이름이 각각 web, db 입니다. 사용자 정의 브릿지에 연결되어 있으므로 이제 이들은 서로를 web, db 이름으로 통신할 수 있습니다. 즉, ping db 와 같은 명령이 가능하다는 의미입니다.

3. 모든 사용자 정의 브릿지는 설정이 용이

여러분이 기본 브릿지 네트워크를 사용한다면 모든 컨테이너들이 동일한 설정을 가집니다. 또한, 기본 브릿지의 설정을 바꿀 경우 도커를 재시작해야 합니다. (즉, 여러분의 서비스는 얼마간의 다운 타임을 감수해야 합니다.)

사용자 정의 브릿지는 docker network create 옵션을 통해서 구성이 가능합니다. 서로 다른 네트워크 제약 조건을 가지는 어플리케이션 그룹들에 대해 여러분들은 단순히 새로운 브릿지를 만들어주기만 하면 대부분의 문제가 해결됩니다.

4. 기본 브릿지 상의 컨테이너는 환경변수를 공유

여러분이 사용자 정의 브릿지를 사용할 경우 컨테이너들은 서로 환경 변수를 공유할 수 없습니다. 아마도 이것은 기본 브릿지에 비해 조금은 부족한 기능이라고 할 수 있습니다.

기본 브릿지는 --link 플래그를 이용해서 이를 쉽게 구현할 수 있습니다. 그러나 명심하세요 곧 사라질 플래그입니다.

다행히도 도커는 대안을 제시합니다. 오히려 superior ways 라고 강하게 이야기하고 있습니다. 한번 살펴볼까요?

5. 사용자 정의 브릿지 네트워크의 연결과 해제의 자유

컨테이너들은 용도에 따라 네트워크 구성이 자유롭게 변경될 수 있습니다. 그러나 기본 브릿지 네트워크에게는 이러한 상식이 통용되지 않습니다.

기본 브릿지의 경우 연결을 해제할 경우 컨테이너를 반드시 중단하고 새로운 네트워크 옵션을 구성하여 재시작해야 합니다. 이러한 특성은 컨테이너 운영에 있어 매우 치명적일 수 있습니다.

만약 여러분이 관리하는 컨테이너가 매우 중요한 역할을 하는 경우는 2 개 이상의 스텝으로 네트워크를 재구성해야만 합니다.

그러나, 사용자 정의 브릿지는 연결과 해제에 있어 자유롭습니다. 여러분의 입맛대로 붙였다가 땔 수 있습니다.

마무리

지금까지 도커에서 사용자 정의 브릿지와 기본 브릿지의 차이점에 대해서 알아보았습니다. 도커는 공식문서에서 기본 브릿지 네트워크를 사용하지 말라고 이야기 하고 있습니다. 공식 문서에서 언급될 정도면 느낌표가 2개 정도 붙은 것이라고 여겨도 무방합니다.

코마는 여러분이 이 글을 통해서 도커 네트워크 구성 시 작업 시간을 최소화하는데 도움이 되기를 바랍니다. 또한 제 블로그에 도커에 대한 많은 글들이 수록되어 있으니 많은 참고 부탁드립니다.

지금까지 코마 였습니다.

구독해주셔서 감사합니다. 더욱 좋은 내용으로 찾아뵙도록 하겠습니다. 감사합니다

링크 정리

이번 시간에 참조한 링크는 아래와 같습니다. 잘 정리하셔서 필요할 때 사용하시길 바랍니다.

이 작가의 다음 글 감상