docker 網路 實現
最近在學習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