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

Bridge 橋模式

? Docker 容器啟動(dòng)時(shí)默認(rèn)的 網(wǎng)絡(luò)模式慎璧,如果不使用--network 指定網(wǎng)絡(luò)模式谈息,那么docker會(huì)為該容器創(chuàng)建一個(gè)網(wǎng)橋袒哥,用于連接該容器網(wǎng)絡(luò)和主機(jī)網(wǎng)卡設(shè)備.

? 此模式會(huì)為每一個(gè)容器分配Network Namespace走诞、設(shè)置IP等,并將一個(gè)主機(jī)上的Docker容器連接到一個(gè)虛擬網(wǎng)橋上妥曲。

? 創(chuàng)建一個(gè)后臺(tái)容器,并查看網(wǎng)卡信息 與 宿主機(jī) 的網(wǎng)橋 做對(duì)比; 明顯看出 bridge 模式 下 docker 會(huì) 在docker0 網(wǎng)橋下創(chuàng)建一對(duì) veth 設(shè)備 作為 容器與橋 的連接钦购,270 --> 271

# docker run -d --name test_bridge --network=bridge busybox tail -f /dev/null
# bridge link show
271: veth3d1d764 state UP @(null): <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master docker0 state forwarding priority 32 c
ost 2 
# docker exec -i test_bridge ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
270: eth0@if271: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue 
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever
+----------------------------------------------------------------+-----------------------------------------+-----------------------------------------+
|                          Host                                  |              Container 1                |              Container 2                |
|                                                                |                                         |                                         |
|       +------------------------------------------------+       |       +-------------------------+       |       +-------------------------+       |
|       |             Newwork Protocol Stack             |       |       |  Newwork Protocol Stack |       |       |  Newwork Protocol Stack |       |
|       +------------------------------------------------+       |       +-------------------------+       |       +-------------------------+       |
|            ↑             ↑                                     |                   ↑                     |                    ↑                    |
|............|.............|.....................................|...................|.....................|....................|....................|
|            ↓             ↓                                     |                   ↓                     |                    ↓                    |
|        +------+     +--------+                                 |               +-------+                 |                +-------+                |
|        |.3.101|     |  .9.1  |                                 |               |  .9.2 |                 |                |  .9.3 |                |
|        +------+     +--------+     +-------+                   |               +-------+                 |                +-------+                |
|        | eth0 |     | docker0|<--->|  veth |                   |               | eth0  |                 |                | eth0  |                |
|        +------+     +--------+     +-------+                   |               +-------+                 |                +-------+                |
|            ↑             ↑             ↑                       |                   ↑                     |                    ↑                    |
|            |             |             +-------------------------------------------+                     |                    |                    |
|            |             ↓                                     |                                         |                    |                    |
|            |         +-------+                                 |                                         |                    |                    |
|            |         |  veth |                                 |                                         |                    |                    |
|            |         +-------+                                 |                                         |                    |                    |
|            |             ↑                                     |                                         |                    |                    |
|            |             +-------------------------------------------------------------------------------|--------------------+                    |
|            |                                                   |                                         |                                         |
|            |                                                   |                                         |                                         |
|            |                                                   |                                         |                                         |
+------------|---------------------------------------------------+-----------------------------------------+-----------------------------------------+
             ↓
     Physical Network  (192.168.3.0/24)

Host 模式

? 這個(gè)模式下檐盟,容器將不會(huì)獲得一個(gè)獨(dú)立的Network Namespace,而是和宿主機(jī)共用一個(gè)Network Namespace押桃。容器將不會(huì)虛擬出自己的網(wǎng)卡葵萎,配置自己的IP等,而是使用宿主機(jī)的IP和端口

? 創(chuàng)建一個(gè)容器唱凯,并查看ip, 信息與宿主機(jī)一致羡忘,二者公用同一個(gè)網(wǎng)絡(luò)命名空間

docker run -i --network=host busybox ip a

None 模式

? 這種模式下,Docker容器擁有自己的Network Namespace磕昼,但是卷雕,并不為Docker容器進(jìn)行任何網(wǎng)絡(luò)配置。也就是說票从,這個(gè)Docker容器沒有網(wǎng)卡漫雕、IP、路由等信息峰鄙。需要我們自己為Docker容器添加網(wǎng)卡浸间、配置IP等。

創(chuàng)建一個(gè)容器先馆,查看該容器的 Network Namespace发框, 05 是上面 bridge 的, default 是docker容器本身的

docker run -d --name test_none --network=none busybox tail -f /dev/null
docker inspect test_none
...
"NetworkSettings": {
            "Bridge": "",
            "SandboxID": "03240dad926fe76937281421fd32703e5a7c9e0e828c6cccb18b43f5194dda1e",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {},
            "SandboxKey": "/var/run/docker/netns/03240dad926f",
...
ls /var/run/docker/netns
03240dad926f  0573eb6fb3e6  default

Container 模式

? 這個(gè)模式下煤墙,指定新創(chuàng)建的容器和已經(jīng)存在的一個(gè)容器共享一個(gè)Network Namespace梅惯,而不是和宿主機(jī)共享。新創(chuàng)建的容器不會(huì)創(chuàng)建自己的網(wǎng)卡仿野,配置自己的IP铣减,而是和一個(gè)指定的容器共享IP、端口范圍等脚作。同樣葫哗,兩個(gè)容器除了網(wǎng)絡(luò)方面,其他的如文件系統(tǒng)球涛、進(jìn)程列表等還是隔離的劣针。兩個(gè)容器的進(jìn)程可以通過lo網(wǎng)卡設(shè)備通信。

? 使用test_bridge 容器網(wǎng)絡(luò)亿扁,創(chuàng)建一個(gè)新容器捺典,并比較二者網(wǎng)絡(luò)信息,二者公用一塊虛擬網(wǎng)卡都是 271

# docker run -d --name test_none --network=container:test_bridge busybox tail -f /dev/null
# docker exec -i test_bridge ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1                                                               
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00                                                                  
    inet 127.0.0.1/8 scope host lo                                                                                         
       valid_lft forever preferred_lft forever                                                                             
270: eth0@if271: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue                                           
    link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff                                                                     
    inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0                                                                
       valid_lft forever preferred_lft forever
# docker exec -i test_container ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1                                                               
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00                                                                  
    inet 127.0.0.1/8 scope host lo                                                                                         
       valid_lft forever preferred_lft forever                                                                             
270: eth0@if271: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue                                           
    link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff                                                                     
    inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0                                                                
       valid_lft forever preferred_lft forever

User 自定義

? 該模式下从祝,使用docker network 命令 創(chuàng)建自定義的網(wǎng)絡(luò)襟己,處于該網(wǎng)絡(luò)下的docker可以通過 container名稱進(jìn)行通信引谜,這里不能在使用busybox作為測試imgae需要使用完整的linux系統(tǒng)

# 創(chuàng)建一個(gè)isolated_nw 的孤立網(wǎng)絡(luò),并配置子網(wǎng)信息
docker network create -d bridge --subnet 172.25.0.0/16 isolated_nw 
# 創(chuàng)建一個(gè)容器擎浴,使用isolated_nw 網(wǎng)絡(luò)员咽,并指定ip地址
docker run --network=isolated_nw --ip=172.25.3.3 -itd --name=test_user1 linkage_img
# 創(chuàng)建一個(gè)容器,并連接到isolated_nw
docker run -itd --name test_user2 --network=isolated_nw linkage_img
docker network connect isolated_nw test_user2
# 測試使用 docker name 按名字通信
docker exec -i test_user2 ping -w 4 test_user1
PING test_user1 (172.25.3.3): 56 data bytes
64 bytes from 172.25.3.3: seq=0 ttl=64 time=0.070 ms
64 bytes from 172.25.3.3: seq=1 ttl=64 time=0.080 ms
64 bytes from 172.25.3.3: seq=2 ttl=64 time=0.080 ms
64 bytes from 172.25.3.3: seq=3 ttl=64 time=0.097 ms
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末贮预,一起剝皮案震驚了整個(gè)濱河市贝室,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌萌狂,老刑警劉巖档玻,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件怀泊,死亡現(xiàn)場離奇詭異茫藏,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)霹琼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門务傲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人枣申,你說我怎么就攤上這事售葡。” “怎么了忠藤?”我有些...
    開封第一講書人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵挟伙,是天一觀的道長。 經(jīng)常有香客問我模孩,道長尖阔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任榨咐,我火速辦了婚禮介却,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘块茁。我一直安慰自己齿坷,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開白布数焊。 她就那樣靜靜地躺著永淌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪佩耳。 梳的紋絲不亂的頭發(fā)上遂蛀,一...
    開封第一講書人閱讀 51,578評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音蚕愤,去河邊找鬼答恶。 笑死饺蚊,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的悬嗓。 我是一名探鬼主播污呼,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼包竹!你這毒婦竟也來了燕酷?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤周瞎,失蹤者是張志新(化名)和其女友劉穎苗缩,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體声诸,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡酱讶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了彼乌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片泻肯。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖慰照,靈堂內(nèi)的尸體忽然破棺而出灶挟,到底是詐尸還是另有隱情,我是刑警寧澤毒租,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布稚铣,位于F島的核電站,受9級(jí)特大地震影響墅垮,放射性物質(zhì)發(fā)生泄漏惕医。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一噩斟、第九天 我趴在偏房一處隱蔽的房頂上張望曹锨。 院中可真熱鬧,春花似錦剃允、人聲如沸沛简。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽椒楣。三九已至,卻和暖如春牡肉,著一層夾襖步出監(jiān)牢的瞬間捧灰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留毛俏,地道東北人炭庙。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像煌寇,于是被迫代替她去往敵國和親焕蹄。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355