【轉】Docker網絡模式--默認模式bridge模式


一 引言

當 Docker 啟動時,會自動在主機上創建一個名為 docker0 虛擬網橋,這實際上就是 Linux 的一個 bridge,可以理解為一個軟件交換機。它會在掛載到它的網口之間進行轉發。
系統會為這個 docker0 分配一個私有網段的ip。如ip地址為172.17.0.1子網掩碼為255.255.0.0。
當我們創建一個新的容器時,同時會創建了一對veth pair接口(即對等接口,當數據包發送到一個接口時,另外一個接口也可以收到相同的數據包)。這對接口一端在容器內,即 eth0;另一端在本地並被掛載到 docker0 網橋,名稱以 veth 開頭。通過這種方式,主機可以跟容器通信,容器之間也可以相互通信。

 

 

二 驗證過程

先創建兩個容器:
docker run -itd -P --name tomcat1 tomcat
docker run -itd -P --name tomcat2 tomcat
ifconfig

可以看到隨機生成了兩個名稱為veth9454074和vethe9b7cb1的interfaces。

查看主機網橋配置。
brctl show
兩個容器的網絡端口都掛載到了 docker0 上。
docker ps
查看運行的docker容器。

 

 查看容器的網絡信息

docker inspect tomcat1

 

 docker inspect tomcat2

 

 

可以看出,這里兩個容器的網關都是172.17.0.1,即 docker 在物理主機上創建的 docker0 虛擬網橋。
ip地址分別為172.17.0.2和172.17.0.3。
進入到容器tomcat1中。
在容器中執行下面的命令,可以查看容器的網絡信息。
ip addr show

 

 可以看到,容器內有一個名為eth0的網絡接口,ip為172.17.0.2。

查看容器轉發信息
ip route show

 

 可以看出來,在容器中輸出的路由信息,由172.17.0.0/16可知子網掩碼是255.255.0.0。由此可知,docker的docker0 虛擬網橋和容器里的eth0都是屬於同一個子網的。

這些網絡配置和使用docker inspect查詢出來的也是一致的。
同時可以驗證,容器(tomcat1)與容器(tomcat2)之間,主機與容器之間,容器與主機之間的網絡都是聯通的。

 

通過分析,上面的網絡拓撲如下:

 

 

三 網絡配置的過程

所以,Docker完成以上網絡配置的過程大致是這樣的
1 在主機上創建一對虛擬網卡veth pair設備。
2 Docker將veth pair設備的一端放在新創建的容器中,並命名為eth0。另一端放在主機中,以veth*這樣類似的名字命名,並將這個網絡設備加入到docker0網橋中。
3 從docker0子網中分配一個IP給容器使用,並設置docker0的IP地址為容器的默認網關。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM