1. 程式人生 > >docker 網絡 實現

docker 網絡 實現

直接 網絡模式 資源隔離 技術 host 自己的 bsp containe 物理

最近在學習docker網絡相關的知識,關於網絡這塊兒記下來,以便review

dokcer安裝完成之後默認提供三種網絡 bridge host none docker默認使用bridge

技術分享圖片

bridge在物理機之上創建一個軟交換機 docker0 同事也可以當網卡使用 給予IP

技術分享圖片

啟動容器的時候會給容器賦予一個網卡一個IP,同時在交換機上給另一個IP,一個網卡

技術分享圖片

yum -y bridge-utils

技術分享圖片

使用brctl show 可以看到docker0 上面的網卡的接口,目前有兩個,因為啟動了兩個docker

技術分享圖片

技術分享圖片

這幅圖我們能發現這個接口對應了if38 if 50 那麽這個if38 if50 沒有顯示出來是因為這一半在容器中

在docker裏面找到對應的另一半

技術分享圖片

docker0 橋默認是個nat橋 ,沒生成一個容器之後 都會生成iptables規則如下:

技術分享圖片

任何接口進來只要不是到達docker0的地址,都需要作偽裝

第一種 橋接網絡模式,如果外部主機想要訪問本機的一個docker,只有使用SNAT,D

NAT方式實現。 在主機的網卡上做端口的映射。

容器是由USER MOUNT Pid UTS Net IPC六個獨立的名稱空間組成 namespace資源隔離 cgroup資源劃分

第二種 :技術分享圖片通過左圖方式能使多個容器共用一個網絡接口 也就是一個lo通信,聯盟式網絡

第三種:host 讓容器使用宿主機的namespace,就擁有了管理主機的網絡權力,是第三種的衍生,第三種是2個docker共享網絡資源,使得2個docker內部程序可以通過lo直接通信

第四種 none 使得容器成為一個孤島 只處理自己的程序

可以通過docker network inspect bridge 查看 bridge網絡的默認配置

docker container inspect XX技術分享圖片

docker 網絡 實現