Docker學(xué)習(xí)(11) Docker 網(wǎng)絡(luò)
- Docker網(wǎng)絡(luò)體系的基本原理:容器網(wǎng)絡(luò)模型、以及Libnetwork
Docker網(wǎng)絡(luò)簡(jiǎn)介
- Docker的網(wǎng)絡(luò)架構(gòu)源自一個(gè)叫做容器網(wǎng)絡(luò)模型(CNM)
- Libnetwork是Docker對(duì)CNM的一種實(shí)現(xiàn)截驮,提供了Docker核心網(wǎng)絡(luò)架構(gòu)的全部功能。
- 為了實(shí)現(xiàn)開(kāi)箱即用的效果,Docker封裝了一系列的本地驅(qū)動(dòng)闷盔,包括:
- 單機(jī)橋接網(wǎng)絡(luò)(Single-Host Brige Network)
- 多機(jī)覆蓋網(wǎng)絡(luò)(Multi-Host Overlay)
- Libnetwork提供了本地服務(wù)發(fā)現(xiàn)和容器的負(fù)載均衡解決方案劲弦。
Docker網(wǎng)絡(luò)——詳解
基礎(chǔ)理論
- Docker的網(wǎng)絡(luò)架構(gòu)主要由3個(gè)部分過(guò)程:CNM、Libnetwork和驅(qū)動(dòng)
CNM
- CNM是docker網(wǎng)絡(luò)的設(shè)計(jì)標(biāo)準(zhǔn):規(guī)定了Docker網(wǎng)絡(luò)架構(gòu)的基礎(chǔ)組成要素雏节。
- 具體內(nèi)容:https://github.com/docker/libnetwork
- CNM定義了三個(gè)基本要素:沙盒(Sandbox)胜嗓、終端(Endpoint)和網(wǎng)絡(luò)(network)
- 沙盒:獨(dú)立的網(wǎng)絡(luò)桟,包括以太網(wǎng)的接口钩乍、端口辞州、路由表以及NDS配置。
- 終端:虛擬網(wǎng)絡(luò)接口寥粹,和普通網(wǎng)絡(luò)接口一樣变过,主要負(fù)責(zé)創(chuàng)建網(wǎng)絡(luò)埃元,在CNM中,主要是將沙盒連接到網(wǎng)絡(luò)
- 網(wǎng)絡(luò):是802.1d網(wǎng)橋的軟件實(shí)現(xiàn)媚狰,網(wǎng)絡(luò)就是需要交互終端的集合岛杀,并且終端直接相互集合。
- docker環(huán)境中最小的調(diào)度單位是容器崭孤。
Libnetwork
- Libnetwork是CNM的具體實(shí)現(xiàn)类嗤,通過(guò)Go語(yǔ)言編寫(xiě)的,實(shí)現(xiàn)了CNM列出的核心組件辨宠。
- Libnetwork實(shí)現(xiàn)了CNM定義的3個(gè)組件遗锣。還實(shí)現(xiàn)了本地發(fā)現(xiàn)功能,基于Ingress的容器負(fù)載均衡嗤形,以及網(wǎng)絡(luò)控制層和管理層的功能黄伊。
驅(qū)動(dòng)
通過(guò)實(shí)現(xiàn)特定網(wǎng)絡(luò)拓?fù)涞姆绞絹?lái)拓?fù)湓撃P偷哪芰Α?/p>
驅(qū)動(dòng)負(fù)責(zé)實(shí)現(xiàn)了網(wǎng)絡(luò)的數(shù)據(jù)層。
Docker封裝了內(nèi)置驅(qū)動(dòng)派殷,包括bridge还最,Overlay以及macvlan