티스토리 뷰

Docker/Docker 네트워크

Docker network

로또_ 2019. 9. 18. 17:56

Docker network

 

docker0는 container가 통신하기 위한 가상 linux bridge 입니다. bridge는 기본적으로 L2 통신 기반이며, 만약 container가 하나 생성되면 이 bridge에 container의 interface가 하나씩 binding 되는 형태입니다. 따라서 container가 외부로 통신할 때는 무조건 docker0 interface를 지나야합니다.

 

만약 외부와 연결을 해야할 경우에는 호스트에 veth(=virtual eth)라는 네트워크 인터페이스를 생성하고 컨테이너의 eth와 연결이 됩니다. veth 인터페이스는 사용자가 직접 생성할 필요 없이 도커엔진에 의해 자동으로 생성이 됩니다.

veth 인터페이스 뿐만 아니라 docker()라는 브리지도 있는데, 이는 veth 인터페이스와 바인딩되어 호스트의 eth 인터페이스 와 연결을 해줍니다.

 

 


 

 

 

도커의 네트워크 기능

도커에서 제공하는 대표적인 네트워크 드라이버로는 브릿지(bridge), 호스트(host), 논(none), 컨테이너(container, 오버레이(overlay)가 있습니다. 각자 드라이버의 특징을 살펴보기로 하겠습니다.

 

 

브릿지 네트워크

docker() 브리지와 비슷하지만 사용자가 정의한 브리지를 생성해 각 컨테이너에 연결하는 네트워크 구조로 컨테이너는 연결된 브리지를 통해 외부와 통신할 수 있습니다.

 

호스트 네트워크

네트워크를 호스트로 설정하면 호스트의 네트워크 환경을 그대로 사용할 수 있습니다(= 내가 MacOS를 사용하면 MacOS의 네트워크를 그대로 이용한다는 의미입니다.) 또 컨테이너의 네트워크를 호스트 모드로 설정하면 컨테이너 내부의 어플리케이션을 별도의 포트 포워딩 없이 바로 서비스 할 수 있습니다. 

 

 

논 네트워크

none은 말 그대로 네트워크를 사용하지 않는 것을 의미합니다. none 네트워크로 설정을 하면 네트워크 인터페이스는 lo 인터페이스만 나타납니다. 이렇게 설정된 컨테이너는 외부와 단절 됩니다.

 

 

컨테이너 네트워크

 

–net 옵션으로 container를 입력하면 다른 컨테이너의 네트워크 환경을 공유 할 수 있습니다. 

반응형