네트워크 네임스페이스와 도커 네트워크의 작동 방식은 거의 유사함
다른 네트워크 솔루션(rkt, mesos, k8s)도 같은 방식으로 작동함
모두 같은 네트워크 문제를 해결하기 위해 비슷한 방식으로 접근하는데, 왜 다른 솔루션이 존재하는걸까? 모두가 따를 수 있는 한 가지 방식으로 코딩하여 만들면 어떨까?
→ 예를 들어 ‘브릿지’라는 프로그램으로 컨테이너 네트워크를 관리하며, rkt 과 k8s 같은 솔루션이 브릿지 프로그램을 사용하여 네트워킹 구성 작업을 한다.
cni : 컨테이너 런타임 환경에서 네트워킹 문제를 해결하기 위해 프로그램이 어떻게 개발되어야 하는지 정의하는 표준의 집합
여기서 말하는 프로그램=플러그인 이고, 위에서 언급한 브릿지 프로그램도 이 플러그인의 일부임
cni는 플러그인이 어떻게 개발되어야 하는지 컨테이너 런타임이 어떻게 플러그인을 호출해야 하는지 정의한다.
bridge, vlan, ipvlan, macvlan, windows
dhcp, host-local
weave, flannel, cilium, nsx …
다만 도커는 여기 해당하지 않음. 도커는 CNM(container network model) 이라는 자체 표준으로 컨테이너 네트워크 문제를 해결한다.
cni와는 유사하지만 차이 존재해서 cni 플러그인으로 사용할 수 없다.