Docker網絡模型

Docker容器技術基於Linux Container實現的。在Linux Container中,包含用於隔離進程的Namespaces。在衆多Namespace技術裏,存在一個Network Namespace,每個被Network Namespace隔離的空間都擁有自己的網絡設備、IP地址、路由表、防火牆、網絡配置、端口表等,Docker正是藉助這個東西實現了對容器網絡的隔離。

那麼具體實現呢:

Namespace僅僅實現了網絡的隔離,然而我們容器是需要與外界進行信息交流的。那麼就由此出現了 虛擬網卡 veth-pair設備,這個設備是個虛擬網絡通道,並且是成對出現的,用於連接兩個網絡終端:

但是我們宿主機運行的不止一個容器,要實現衆多容器之間的通信,就要利用Bridge,網橋。Docker利用Bridge把veth-pair設備的一端全部連接在Bridge所構成的交換機中,把容器連接不同外部網絡的任務通過veth-pair轉移到了Bridge上。

默認Docker會創建一個docker0的虛擬網橋,連接在同一個網橋上的容器可以互相通信。通過ifconfig命令查看

 

當啓動容器,宿主機執行ifconfig會成對出現veth*:

 

總結一下:

Network Namespace:實現了網絡資源的隔離。

Veth Pair:打通了網絡隔離環境的數據傳輸通道。在Docker中,一端連接到容器中的虛擬網卡上,一端連接到宿主機專用的網橋(docker0)上,通過這種方式實現了Docker容器和外部網絡的互通。

Linux網橋:放置在宿主機中的網橋,起到了網絡交換機的作用。因爲容器網絡通過Veth Pair連接到網橋上,所以它能夠在容器間轉發網絡數據。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章