CNM
aka Container Network Model. This is the Docker Networking Model.
Note: there is an alternative – CNI (aka Container Network Interface) from CoreOS which is more suited to Kubernetes. More here: https://kubernetes.io/blog/2016/01/why-kubernetes-doesnt-use-libnetwork/
The CNM has 3 main components:
- Sandbox: contains configuration of container’s network stack (aka namespace in Linux)
- Endpoint: joins Sandbox to a Network (aka network interface. e.g. eth0)
- Network: group of Endpoints that can communicate directly
See also: https://github.com/docker/libnetwork/blob/master/docs/design.md
and
Libnetwork
aka Control & Management plane
https://github.com/docker/libnetwork
Cross platform and pluggable.
Real-world implementation of CNM by Docker.
Drivers
Data plane
Network-specific detail
- Overlay
- MACVLAN
- IPVLAN
- Bridge