您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“Docker網絡管理的示例分析”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Docker網絡管理的示例分析”這篇文章吧。
一:簡介
1. CNM(Container Network Model):定義了構建容器虛擬化網絡的模型,同時還提供了可以用于開發多種網絡驅動的標準化接口和組件。CNM中主要有沙盒(sandbox),端點(endpoint)和網絡(network)三種組件。
2. Docker daemon通過調用libnetwork對外提供的API完成網絡的創建和管理等功能。Libnetwork中則使用了CNM來完成網絡功能的提供。
二:CNM核心組件
1.沙盒:一個沙盒包含了一個容器網絡棧的信息。沙盒可以對容器的接口,路由和DNS設置等進行管理。一個沙盒可以有多個端點和多個網絡。
2.端點:一個端點可以加入一個沙盒和一個網絡;一個端點只可以屬于一個網絡并且只屬于一個沙盒。
3.網絡:一個網絡是一組可以直接互相聯通的端點。
三:libnetwork內置驅動
1. bridge驅動:此驅動為Docker的默認設置,使用這個驅動的時候,libnetwork將創建出來的Docker容器連接到Docker網橋上。作為最常規的模式,bridge模式已經可以滿足Docker容器最基本的使用。然而其與外界的通信使用NAT(Network Address Translation,網絡地址轉換),增加了通信的復雜性,在復雜場景下使用會有諸多限制。
2. host驅動:使用這種驅動的時候,libnetwork將不為Docker創建網絡協議棧(指網絡中各層協議的總和,其形象的反映了一個網絡中文件傳輸的過程:由上層協議到底層協議,再由底層協議到上層協議)即不會創建獨立的network namespace. Docker容器中的進程處于宿主機的網絡環境中,相當于Docker容器和宿主機公用同一個network namespace,使用宿主機的網卡,IP和端口等信息。但是,容器其他方面,如文件系統,進程列表等還是和宿主機隔離的。Host模式很好地解決了容器與外界通信的地址轉換問題,可以直接使用宿主機的IP進行通信,不存在虛擬化網絡帶來的額外性能負擔。但是host驅動也降低了容器與容器之間,容器與宿主機之間網絡層面的隔離性,引起網絡資源的競爭與沖突。因此可以認為host驅動適用于對于容器集群規模不大的場景。
3. overlay驅動:
此驅動采用IETF標準的VXLAN方式,并且是VXLAN中被普遍認為最合適大規模的云計算虛擬化環境的SDN controller模式。在使用的過程中,需要一個額外的配置存儲服務,例如Consul,etcd或ZooKeeper.還需要在啟動Docker daemon的時候額外添加參數來指定所使用的配置存儲服務地址。
4. remote驅動:
這個驅動實際上并未做真正的網絡服務實現,而是調用了用戶自行實現的網絡驅動插件,使libnetwork實現了驅動的可插件化,更好地滿足了用戶的多種需求。用戶只要根據libnetwork提供的協議標準,實現其所要求的各個接口并向Docker daemon進行注冊。
5. null驅動:使用這種驅動的時候,Docker容器擁有自己的network namespace,但是并不為Docker容器進行任何網絡配置。也就是說,這個Docker容器除了network namespace自帶的loopback網卡外,沒有其他任何網卡,IP,路由等信息。需要用戶為Docker容器添加網卡,配置IP等。這種模式如果不進行特定的配置是無法正常使用的,但是優點也非常明顯,它給了用戶最大的自由度來自定義容器的網絡環境。
四:舉例
示例中,使用Docker默認的bridge驅動進行演示,組成一個網絡拓撲的應用。
1. 它有兩個網絡,backend network為后端網絡,frontend network為前端網絡,兩個網絡互不聯通
2.Container1和container3各擁有一個端點,并且分別加入到后端網絡和前端網絡中。而container2則有兩個端點。
除了backend和frontend之外,還有3個Docker daemon默認創建的網絡,默認網絡無法使用docker network rm 進行刪除。
docker run -it --name container1 --net backend centos
docker run -it --name container2 --net backend centos
docker run -it --name container3 --net frontend centos
docker
network connect frontend container2
Docker network connect命令會在所連接的容器中創建新的網卡,以完成其與所指定網絡的連接。
五:bridge驅動實現機制分析
1. docker0網橋: linux安裝完Docker之后,宿主機上多了一塊名為docker0的網卡。每個容器中都會有兩塊網卡l0和eth0. L0是容器的回環網卡;eth0即為容器與外界通信的網卡,它和宿主機上的網橋docker0在同一個網段。
1. iptables規則:Docker安裝完成后,將默認在宿主機系統上增加一些iptables規則,以用于Docker容器和容器之間及和外界的通信。
2. Docker容器的DNS和主機名:同一個Docker鏡像可以啟動多個Docker容器,它們的主機名并不一樣,實際上容器中的/etc/hostname,/etc/hosts,/etc/resolv.conf 會被虛擬文件覆蓋掉。
以上是“Docker網絡管理的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。