天天看點

docker進階與實戰 5 docker網絡

docker原生網絡不足,第三方SDN解決方案來滿足各種需求.

docker收購socketplane後,libnetwork項目開始發力.

libnetwork定義了新的容器網絡模型CNM,标準API為容器配置網絡,底層适配各種驅動.

CNM包括三個概念:

    沙盒:linux平台上基于linux network namespace.在一個隔離的環境中儲存網絡配置.沙盒可以包含多個網絡的endpoint.

    Endpoint:将沙盒接入網絡,一個Endpiont隻能屬于一個沙盒,一個沙盒可以通過多個endpiont接入不同的網絡.目前使用的是veth pair接口

    網絡:endpoint集合,實作vlan,bridge等網絡功能

docker進階與實戰 5 docker網絡

目前已經實作的5種網絡驅動:bridge,host,null,remote,overlay

libnetwork在linux下基于kernel的network namespace實作.

實作5種網絡功能:

     none:不配置網絡

     container:共享同一network namespace的配置,是以IP等資訊都一樣.

     host:共享主機上root network namespace,是不安全的.

     bridge(預設):NAT模式.通信通過主機的iptables控制.

     overlay:docker原生跨主機多子網模型,複雜,底層使用KV存儲系統進行消息同步,核心是linux bridge與vxlan隧道實作跨主機.

          vxlan ID從256-1000

          網絡效率并不高

下面是我繪制的bridge與overlay的網絡圖

docker進階與實戰 5 docker網絡