中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

docker宿主環境中的容器網絡是什么意思

發布時間:2021-11-18 09:50:54 來源:億速云 閱讀:203 作者:小新 欄目:大數據

這篇文章主要介紹了docker宿主環境中的容器網絡是什么意思,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

在介紹docker宿主環境中的容器網絡的時候我們先大致了解如下一些概念和知識:

  • Linux Network Namespace

  • Linux Bridge Device

  • Linux Veth Device

Linux Network Namespace:

一提到linux網絡,本質上就是由一系列組件組成,從而共同協作完成網絡功能,一般這些組件包括:

  • linux網絡設備:例如network interface device,loop back device,bridge device,veth device,tun/tap device,vxlan device,ip tunnel device等等。這些設備可以完成網絡數據包的收發,以及提供額外的修改數據包等功能。

  • linux路由表,arp表,fdb(forwarding database)等:路由表提供三層ip包的路由尋址功能,arp表提供ip對應的二層mac地址,fdb在在基于mac轉發的功能里提供mac地址對應的網絡接口。

  • linux協議棧:完成對網絡協議包的封裝與解析,例如二層ethernet包,三層ip包,四層tcp/udp包,還有類似icmp包等等。

  • linux iptable:iptable基于linux內核模塊netfilter,完成對于linux的firewall管理,例如控制ingress與engress,nat地址轉換,端口映射等等。

linux network namespace就像是一個可以相互隔離的組一樣,把網絡設備,路由表,協議棧,iptable等組件包裝起來,然后通過namespace來相互隔離,互不干擾。所以更具體的說,網絡設備,路由表,協議棧,iptable等是工作在某一個linux network namespace下的。而我們平時看到的linux主機的網卡,路由表,arp表,協議棧,iptable都是工作在主機的默認網絡命名空間下,下圖用來表述linux network namespace:

docker宿主環境中的容器網絡是什么意思

當然linux不僅僅只有network namespace用來進行網絡隔離,還有pid namespace用來隔離進程,user namespace用來隔離用戶,mount namespace用來隔離掛載點,ipc namespace用來隔離信號量和共享內存等,uts namespace用來隔離主機名和域名。再結合上linux cgroup控制組,用來限制資源,例如cpu,memory,io等。這些基礎知識構成了容器的底層實現,有興趣的同學可以研究一下linux namespace,cgroup,ufs等基礎知識,你會發現docker等容器技術都是基于這些實現的。

Linux Bridge網橋:

Bridge是一種linux網絡設備,可以附加attach多個linux從設備。大家可以把linux bridge想象成二層交換機,可以進行二層數據包的廣播,但是注意的是linux bridge設備可以有自己的ip地址。也就是說,多個linux網絡設備attach到一個bridge上,那么這些網絡設備的ip地址將會失效(只有二層功能),當一個設備收到數據包的時候,bridge會把數據包轉發到其它所有attach到bridge上的從設備,從而實現廣播的效果。下圖用來表述linux bridge:

docker宿主環境中的容器網絡是什么意思

Linux Veth設備:

Veth設備總是成對出現,它的特點是會有一對peer,兩個端點,數據包從一個peer流入,總是可以從另一個peer流出。而且veth pair是可以跨linux network namespace的,這個特性很重要。玄外之音,因為network namespace本質就是相互隔離的,可以用veth來做到數據包的跨network namespace的訪問。當然是一個peer在一個namespace里,另一個peer在另一個namespace里了。下圖用來表述linux veth pair設備:docker宿主環境中的容器網絡是什么意思

docker宿主環境中的容器網絡:

有了以上知識基礎,當講到這里的時候,其實就已經比較清晰了。對于docker宿主環境中容器的網絡一般是:

  • 每一個container都有一個network namespace,然后擁有container自己的網絡設備,路由表,arp表,協議棧,iptable等,各個container的network namespace相互隔離。

  • 在宿主的default netwok nemespace中會有一個linux bridge設備,一般名稱為docker0。

  • 每一個container對應一個veth pair設備,這個設備的一端在container的network namespace里,另一端attach到宿主networkwork namespace的docker0 linux bridge上。

  • 這樣在宿主環境里,就好像有一個二層交換機(docker0 bridge),把宿主內的所有container連接起來。所以,在宿主內的container都是可以直接相互訪問的,而且是直連的方式。

下圖用來表述宿主環境中的容器網絡:

docker宿主環境中的容器網絡是什么意思

感謝你能夠認真閱讀完這篇文章,希望小編分享的“docker宿主環境中的容器網絡是什么意思”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

丁青县| 营口市| 上饶县| 皮山县| 张家川| 五莲县| 拜泉县| 西贡区| 丹寨县| 凌海市| 麦盖提县| 天全县| 正镶白旗| 奉新县| 钟山县| 乌兰察布市| 招远市| 延长县| 奎屯市| 元朗区| 海淀区| 平乡县| 睢宁县| 苍山县| 镇原县| 博白县| 永仁县| 青浦区| 汤原县| 普兰县| 遂川县| 长春市| 聂拉木县| 东光县| 乐至县| 宜章县| 涞源县| 乌审旗| 神木县| 依安县| 福海县|