



下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、 Docker原生網(wǎng)絡和實現(xiàn)原理 在云計算架構設計中,最復雜且最重要的組件就是網(wǎng)絡,Docker作為云計算追捧的新寵兒也不會例外,尤其是當使用Docker容器構建分布式服務時,通信和網(wǎng)絡變得非常重要。面向服務的架構嚴重依賴節(jié)點之間的網(wǎng)絡架構。接下來,我們將從Docker原生網(wǎng)絡架構出發(fā),討論目前活躍的多種針對Docker提出的網(wǎng)絡優(yōu)化方案。在一些簡單情況下,采用Docker原生解決方案就可以滿足要求,但針對更復雜的情況就需要考慮采用優(yōu)化方案。 Docker的網(wǎng)絡是基于Linux的網(wǎng)絡命名空間和虛擬網(wǎng)絡設備(特別是veth pair)來實現(xiàn)。在Docker中,網(wǎng)絡接口默認都是虛擬的接口,可以充分
2、發(fā)揮數(shù)據(jù)在不同Docker間或Docker與宿主機轉發(fā)效率。這是因為Linux通過在內(nèi)核中通過數(shù)據(jù)復制實現(xiàn)虛擬接口之間的數(shù)據(jù)轉發(fā),即發(fā)送接口的發(fā)送緩存中的數(shù)據(jù)包將被直接復制到接收接口的接收緩存中,而無需通過外部物理網(wǎng)絡設備進行交換。 Docker容器創(chuàng)建網(wǎng)絡時,會在本地主機和容器內(nèi)分別創(chuàng)建一個虛擬接口,并讓它們彼此連通,形成一對虛擬網(wǎng)絡接口,這樣的一對接口叫做veth pair。 當Docker進程啟動之后,它會配置一個叫docker0的虛擬網(wǎng)橋在宿主機上。這個網(wǎng)橋接口允許Docker去分配虛擬的子網(wǎng)給即將啟動的容器。這個網(wǎng)橋在容器內(nèi)的網(wǎng)絡和宿主機網(wǎng)絡之間將作為網(wǎng)絡接口的主節(jié)點呈現(xiàn)。 當Doc
3、ker容器啟動后,創(chuàng)建一對虛擬接口,分別放到本地主機和新容器的命名空間中。本地宿主機一端的虛擬接口連接到默認的docker0網(wǎng)橋或指定網(wǎng)橋上,并具有一個以veth開頭的唯一名字。容器一端的虛擬接口將放到新創(chuàng)建的容器中,并修改名字作為eth0,這個接口只在容器的命名空間可見。 從網(wǎng)橋可用地址段中,分配一個網(wǎng)橋子網(wǎng)內(nèi)的IP地址給容器的eth0。這個IP地址嵌在容器內(nèi)網(wǎng)絡中,用于提供容器網(wǎng)絡到宿主機docker0網(wǎng)橋上的一個通道。并配置默認路由網(wǎng)關為docker0網(wǎng)卡的內(nèi)部接口docker0的IP地址。Docker會自動配置iptables規(guī)則和配置NAT,便于連通宿主機上的docker0網(wǎng)橋。完成
4、這些操作之后,容器就可以使用它所能看到的eth0虛擬網(wǎng)卡,來連接其他容器和訪問外部網(wǎng)絡。 Docker提供了一種容器間通信機制叫做Docker links。如果一個新容器鏈接到一個已有容器,新容器將會通過環(huán)境變量獲得已有容器的鏈接信息。通過提供給信任容器有關已有容器的鏈接信息,實現(xiàn)容器間的通信。 同一宿主機上的容器可以相互通信并提供服務給相鄰容器,而不需要額外的配置(端口暴露或發(fā)布),宿主系統(tǒng)會簡單將路由請求從docker0傳到目的地。 容器可以暴露它們的端口給宿主機,用于接收外部請求流量。暴露出的端口可以通過特定端口或由Docker來隨機選擇一個高位空閑端口映射到宿主機上。暴露端口意味著Do
5、cker將呈現(xiàn)該端口是暴露容器所使用,這可以被用于服務發(fā)現(xiàn)和links(新容器將會設置環(huán)境變量來對應原容器暴露的端口)。 容器可以發(fā)布它們的端口給宿主機,端口發(fā)布將映射端口到宿主接口,使得它可以與外界交互。暴露出的端口可選擇映射宿主機上一個指定端口,或者Docker可以自動的隨機選擇一個高位空閑端口。 Libcontainer也需要重點關注下,它是Docker中用于容器管理模塊(創(chuàng)建容器、實現(xiàn)容器生命周期管理),它基于Go語言實現(xiàn),通過管理Namespaces、Cgroups以及文件系統(tǒng)來進行容器控制。在Docker中,對容器管理的模塊為Execdriver,目前Docker支持的容器管理方式有兩種,一種就是最初支持的LXC方式,另一種稱為Native的Libcontainer進行容器管理。 Docker起初是采用LXC的開源容器管理引擎。把LXC復雜的容器創(chuàng)建與使用方式簡化為Docker自己的一套命令體系。后來Docker將底層實現(xiàn)都抽象化到Libcontainer的接口。這樣可以實現(xiàn)跨平臺能力,無論是使用了Namespace、Cgroups技術或是使用Systemd等其他方案,只要實現(xiàn)了Libcontainer定義的一組標準接口,Docker都可以運行。 Docker原生網(wǎng)絡模型在保證端口映射、鏈接正確的情況下,可實現(xiàn)同一宿主機上容器間的通信和宿主機之間的通信。但是,針對
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中小微企業(yè)產(chǎn)供銷實務指導知到課后答案智慧樹章節(jié)測試答案2025年春陜西青年職業(yè)學院
- 運營事故(事件)調(diào)查處理規(guī)則
- 祖父的園子學情分析方案
- 結合DBN-CBR的Agent救援決策模型的研究與應用
- 新課標導向下培養(yǎng)語文閱讀思維的策略研究-以統(tǒng)編版三年級語文閱讀教學為例
- 2025年重水堆核電站及配套產(chǎn)品項目合作計劃書
- 2025版高考歷史大一輪復習第17講古代手工業(yè)和商業(yè)的發(fā)展練習含解析新人教版
- 2024秋高中地理第二章地球上的大氣第四節(jié)全球氣候變化練習含解析新人教版必修1
- 代購合同范例中日文
- 場地前期施工方案
- 九年級物理上冊22內(nèi)燃機省公開課一等獎新課獲獎課件
- 2025年個人向企業(yè)借款合同協(xié)議樣本
- (二調(diào))武漢市2025屆高中畢業(yè)生二月調(diào)研考試 英語試卷(含標準答案)+聽力音頻
- 數(shù)學-湖北省武漢市2025屆高中畢業(yè)生二月調(diào)研考試(武漢二調(diào))試題和解析
- 中學家長學校工作方案(10篇)
- 高考地理二輪復習【知識精研】大氣運動規(guī)律-大氣受熱過程與氣溫
- 【公開課】同一直線上二力的合成+課件+2024-2025學年+人教版(2024)初中物理八年級下冊+
- (正式版)HGT 22820-2024 化工安全儀表系統(tǒng)工程設計規(guī)范
- GB/T 10752-2005船用鋼管對焊接頭
- 國標-》桉樹無性系組培快繁技術規(guī)程
- 百斯巴特扒胎機MS63
評論
0/150
提交評論