Docker 網(wǎng)絡(luò)模式

docker的網(wǎng)絡(luò)模式,了解docker的網(wǎng)絡(luò)模式對docker通信尤為重要。

(一)網(wǎng)絡(luò)模式介紹

查看顯示的三種網(wǎng)絡(luò)模式厨钻,其實還有一種是容器模式饮潦。一共4種

docker network ls

bridge模式:使用–net =bridge指定燃异,默認(rèn)設(shè)置;

host模式:使用–net =host指定继蜡;

none模式:使用–net =none指定回俐;

container模式:使用–net =container:NAMEorID指定。

(二)bridge模式(docker默認(rèn)的網(wǎng)絡(luò)模式)

①介紹

在默認(rèn)情況下稀并,docker 會在 host 機(jī)器上新創(chuàng)建一個 docker0 的 bridge:可以把它想象成一個虛擬的交換機(jī)仅颇,所有的容器都是連到這臺交換機(jī)上面的。docker 會從私有網(wǎng)絡(luò)中選擇一段地址來管理容器碘举,比如 172.17.0.1/16忘瓦,這個地址根據(jù)你之前的網(wǎng)絡(luò)情況而有所不同。

sudo yum install net-toolsifconfig -a

②數(shù)據(jù)流程

容器內(nèi)部發(fā)送一條報文引颈,查看路由規(guī)則耕皮,默認(rèn)轉(zhuǎn)發(fā)到 172.17.0.1(如果是同一個網(wǎng)段境蜕,會直接把源地址標(biāo)記為 172.17.0.2 進(jìn)行發(fā)送)

通過 eth0 發(fā)送的報文,會在 vethXXX 被接收凌停,因為它直接連在 docker0 上粱年,所以默認(rèn)路由到 docker0

這個時候報文已經(jīng)來到了主機(jī)上,查詢主機(jī)的路由表苦锨,發(fā)現(xiàn)報文應(yīng)該通過 eth0 從默認(rèn)網(wǎng)關(guān)發(fā)送出去逼泣,那么報文就被轉(zhuǎn)發(fā)給 eth0(就是前面提到的要打開 linux 系統(tǒng)的自動轉(zhuǎn)發(fā)配置)

匹配機(jī)器上的 iptables,發(fā)現(xiàn)有一條 -A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE舟舒,也就是 SNAT 規(guī)則拉庶,那么 linux 內(nèi)核會修改 ip 源地址為 eth0 的地址,維護(hù)一條 NAT 規(guī)則記錄秃励,然后把報文轉(zhuǎn)發(fā)出去氏仗。(也就是說對于外部來說,報文是從主機(jī) eth0 發(fā)送出去的夺鲜,無法感知容器的存在)

③流程演示方便理解

啟動兩個容器

docker run --name a1 -d busybox /bin/sh -c "while true;do echo hello docker;sleep 10;done"docker run --name a2 -d busybox /bin/sh -c "while true;do echo hello docker;sleep 10;done"

容器互相通信

docker exec -it a1 /bin/sh ifconfig#查看到a1的ip是172.17.0.2exitdocker exec -it a2 /bin/sh ifconfig#查看到a2的ip是172.17.0.3#在a2容器內(nèi)可以ping通172.17.0.2ping 172.17.0.2#在a1容器內(nèi)嘗試ping下a2的ip 172.17.0.3#在a1容器內(nèi)可以ping通172.17.0.2ping 172.17.0.3

記錄ip太麻煩了皆尔,可以通過link的方式直接讓容器包含起來

這樣只是單向的,還需要刪除a1币励,重新創(chuàng)建才能添加link a2慷蠕,

docker run --name a2 --link a1 -d busybox /bin/sh -c "while true;do echo hello docker;sleep 10;done"docker exec -it a2 /bin/shping a1

④自定義網(wǎng)絡(luò)

但是建議大家不要使用link的方式,如果容器千千萬都link食呻,人就受不了了流炕。還是自定網(wǎng)絡(luò)比較靠譜。下面說說自定義網(wǎng)絡(luò)

docker network create -d bridge net-test

測試網(wǎng)絡(luò)通信仅胞,創(chuàng)建容器每辟,進(jìn)行通信

不需要ip的方式兩個容器都是通的。自定義網(wǎng)絡(luò)牛Xclass

docker run --name test3 --network net-test -d busybox /bin/sh -c "while true;do echo hello docker;sleep 10;done"docker run --name test4 --network net-test -d busybox /bin/sh -c "while true;do echo hello docker;sleep 10;done"docker exec -it test3 /bin/shping test4exitdocker exec -it test4 /bin/shping test3exit

自定義網(wǎng)絡(luò)的IP段看下干旧。172.18網(wǎng)段渠欺。

docker network inspect net-test

container 里面包括test3 和test4

(三)host模式(共享主機(jī)的網(wǎng)絡(luò)模式)

docker 不會為容器創(chuàng)建單獨的網(wǎng)絡(luò) namespace,而是共享主機(jī)的 network namespace椎眯,也就是說:容器可以直接訪問主機(jī)上所有的網(wǎng)絡(luò)信息挠将。在實際微服務(wù)的環(huán)境中不建議使用這種。

#network 更換成host docker run --name test5_host --network host -d busybox /bin/sh -c "while true;do echo hello docker;sleep 10;done"? docker exec -it test5_host? /bin/shifconfig

跟宿主機(jī)是一樣的

直接使用 Docker host 的網(wǎng)絡(luò)最大的好處就是性能盅视,如果容器對網(wǎng)絡(luò)傳輸效率有較高要求捐名,則可以選擇 host 網(wǎng)絡(luò)。當(dāng)然不便之處就是犧牲一些靈活性闹击,比如要考慮端口沖突問題镶蹋,Docker host 上已經(jīng)使用的端口就不能再用了。Docker host 的另一個用途是讓容器可以直接配置 host 網(wǎng)路。比如某些跨 host 的網(wǎng)絡(luò)解決方案贺归,其本身也是以容器方式運行的淆两,這些方案需要對網(wǎng)絡(luò)進(jìn)行配置,比如管理 iptables拂酣。容器中秋冰,對這些設(shè)備有全部的訪問權(quán)限。因此docker提示我們婶熬,這種方式是不安全的剑勾。如果在隔離良好的環(huán)境中(比如租戶的虛擬機(jī)中)使用這種方式,問題不大赵颅。

(四)none模式(空網(wǎng)絡(luò)模式)

這種none的也就自己通過exec的方式訪問虽另。

docker run --name test7_none --network none -d busybox /bin/sh -c "while true;do echo hello docker;sleep 10;done"? docker exec -it test7_none /bin/shifconfig

其實還真有應(yīng)用場景。封閉意味著隔離饺谬,一些對安全性要求高并且不需要聯(lián)網(wǎng)的應(yīng)用可以使用 none 網(wǎng)絡(luò)捂刺。比如某個容器的唯一用途是生成密碼,就可以放到 none 網(wǎng)絡(luò)中避免密碼被竊取募寨。

(四)container 模式(容器之前的共享模式族展,學(xué)習(xí)k8s這個很重要)

一個容器直接使用另外一個已經(jīng)存在容器的網(wǎng)絡(luò)配置:ip 信息和網(wǎng)絡(luò)端口等所有網(wǎng)絡(luò)相關(guān)的信息都是共享的。需要注意的是:這兩個容器的計算和存儲資源還是隔離的拔鹰。

# test7_container 依賴a1的網(wǎng)絡(luò)模式 docker run --name test7_container --network container:a1 -d busybox /bin/sh -c "while true;do echo hello docker;sleep 10;done" # 分別進(jìn)入test7_container 和a1查看ifconfig 發(fā)現(xiàn)兩個是一樣的docker exec -it test7_container /bin/shifconfigexitdocker exec -it a1 /bin/shifconfigexit

kubernetes 的 pod 就是用這個實現(xiàn)的仪缸,同一個 pod 中的容器共享一個 network namespace。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末列肢,一起剝皮案震驚了整個濱河市腹殿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌例书,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件刻炒,死亡現(xiàn)場離奇詭異决采,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)坟奥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進(jìn)店門树瞭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人爱谁,你說我怎么就攤上這事晒喷。” “怎么了访敌?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵凉敲,是天一觀的道長。 經(jīng)常有香客問我,道長爷抓,這世上最難降的妖魔是什么势决? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮蓝撇,結(jié)果婚禮上果复,老公的妹妹穿的比我還像新娘。我一直安慰自己渤昌,他們只是感情好虽抄,可當(dāng)我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著独柑,像睡著了一般迈窟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上群嗤,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天菠隆,我揣著相機(jī)與錄音,去河邊找鬼狂秘。 笑死骇径,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的者春。 我是一名探鬼主播破衔,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼钱烟!你這毒婦竟也來了晰筛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤拴袭,失蹤者是張志新(化名)和其女友劉穎读第,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拥刻,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡怜瞒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了般哼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吴汪。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蒸眠,靈堂內(nèi)的尸體忽然破棺而出漾橙,到底是詐尸還是另有隱情,我是刑警寧澤楞卡,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布霜运,位于F島的核電站脾歇,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏觉渴。R本人自食惡果不足惜介劫,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望案淋。 院中可真熱鬧座韵,春花似錦、人聲如沸踢京。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瓣距。三九已至黔帕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蹈丸,已是汗流浹背成黄。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留逻杖,地道東北人奋岁。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像荸百,于是被迫代替她去往敵國和親闻伶。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容