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


Bridge 模式

當(dāng) Docker 進(jìn)程啟動(dòng)時(shí),會(huì)在主機(jī)上創(chuàng)建一個(gè)名為 docker0 的虛擬網(wǎng)橋宛徊,此主機(jī)上啟動(dòng)的 Docker 容器會(huì)鏈接到這個(gè)虛擬網(wǎng)橋上歧杏。虛擬網(wǎng)橋的工作方式和物理交換機(jī)類似陪每,這樣主機(jī)上的所有容器就通過交換機(jī)連在了一個(gè)二層網(wǎng)絡(luò)中影晓。從 docker0 子網(wǎng)中分配一個(gè) IP 給容器使用,并設(shè)置 docker0 的 IP 地址為容器的默認(rèn)網(wǎng)關(guān)檩禾。在主機(jī)上創(chuàng)建一對(duì)虛擬網(wǎng)卡 veth pair 設(shè)備挂签,Docker 將 veth pair 設(shè)備的一端放在新創(chuàng)建的容器中,并命名為 eth0 (容器的網(wǎng)卡)盼产,另一端放在主機(jī)中饵婆,以 vethxxx 這樣類似的名字命名,并將這個(gè)網(wǎng)絡(luò)設(shè)備加入到網(wǎng)橋中戏售∏群耍可通過 brctl show 命令查看。
bridge 模式是 Docker 的默認(rèn)網(wǎng)絡(luò)模式灌灾,不寫 -net 參數(shù)搓译,就是 bridge 模式。使用 docker run -p 時(shí)锋喜,Docker 實(shí)際是在 iptables 做了 DNAT 規(guī)則些己,實(shí)現(xiàn)端口轉(zhuǎn)發(fā)功能。可使用 iptables -t nat --vnL 查看段标,bridge 模式如下圖所示

Bridge 模式.png

$ docker run -tid --net=bridge --name docker_bri1 ubuntu-base:v3 
$ docker run -tid --net=bridge --name docker_bri2 ubuntu-base:v3

$ brctl show
$ docker exec -it docker_bri1 /bin/bash
$ ficonfig -a
$ route -n

隨著 Docker 網(wǎng)絡(luò)的完善涯冠,建議將容器加入自定義的 Docker 網(wǎng)絡(luò)來連接多個(gè)容器,而不是使用 --link 參數(shù)
下面先創(chuàng)建一個(gè)新的 Docker 網(wǎng)絡(luò)

$ docker network create -d bridge my-net

-d 參數(shù)指定 Docker 網(wǎng)絡(luò)類型怀樟,有 bridge overlay。其中 overlay 網(wǎng)絡(luò)類型用于 Swarm mode
運(yùn)行一個(gè)容器并連接到新建的 my-net 網(wǎng)絡(luò)

$ docker run -it --rm --name busybox1 --network my-net busybox sh

打開新的終端盆佣,再運(yùn)行一個(gè)容器并加入到 my-net 網(wǎng)絡(luò)

$ docker run -it --rm --name busybox2 --network my-net busybox sh

再打開一個(gè)新的終端查看容器信息

$ docker container ls
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
0776372cc5ad        busybox             "sh"                13 seconds ago      Up 12 seconds                           busybox2
8f4015b6747c        busybox             "sh"                50 seconds ago      Up 49 seconds                           busybox1

下面通過 ping 來證明 busybox1busybox2 建立了互聯(lián)關(guān)系往堡,在 busybox1 輸入如下命令

/ # ping busybox2
PING busybox2 (172.18.0.3): 56 data bytes
64 bytes from 172.18.0.3: seq=0 ttl=64 time=0.110 ms
64 bytes from 172.18.0.3: seq=1 ttl=64 time=0.118 ms

ping 來測(cè)試連接 busybox2 容器,它會(huì)解析成 172.18.0.3

/ # ping busybox1
PING busybox1 (172.18.0.2): 56 data bytes
64 bytes from 172.18.0.2: seq=0 ttl=64 time=0.153 ms
64 bytes from 172.18.0.2: seq=1 ttl=64 time=0.094 ms

如果有多個(gè)容器之間需相互連接共耍,推薦使用 Docker Compose

Host 模式

如果啟動(dòng)容器的時(shí)候使用 host 模式虑灰,那么這個(gè)容器將不會(huì)獲得一個(gè)獨(dú)立的 Network Namespace,而是和宿主機(jī)共用一個(gè) Network Namespace痹兜。容器將不會(huì)虛擬處自己的網(wǎng)卡穆咐,配置自己的 IP 等。而是用宿主機(jī) IP 和端口字旭。容器其他方面对湃,如文件系統(tǒng)、進(jìn)程列表等還是和宿主機(jī)隔離的

Host 模式.png

$ docker run -tid --net=host --name docker_host1 ubuntu-base:v3
$ docker run -tid --net=host --name docker_host2 ubuntu-base:v3

$ docker exec -it docker_host1 /bin/bash
$ docker exec -it docker_host2 /bin/bash

$ ifconfig -a
$ route -n

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è)備通信

Container 模式.png

$ docker run -tid --net=container:docker_bri1 --name docker_con1 ubuntu-base:v3

$ docker exec -it docker_con1 /bin/bash
$ docker exec -it docker_bri1 /bin/bash

$ ifconfig -a
$ route -n

None 模式

使用 none 模式惶室,Docker 容器擁有自己的 Network Namespace神年,并不為 Docker 容器進(jìn)行任何網(wǎng)絡(luò)配置。即這個(gè) Docker 容器沒有網(wǎng)卡淆攻、IP肮之、路由器信息。需要自己為 Docker 容器添加網(wǎng)卡卜录、配置 IP 等

None 模式.png

$ docker run -tid --net=none --name docker_non1 ubuntu-base:v3

$ docker exec -it docker_non1 /bin/bash

$ ifconfig -a
$ route -n
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末戈擒,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子艰毒,更是在濱河造成了極大的恐慌筐高,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異柑土,居然都是意外死亡蜀肘,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門稽屏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扮宠,“玉大人,你說我怎么就攤上這事狐榔√吃觯” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵薄腻,是天一觀的道長(zhǎng)收捣。 經(jīng)常有香客問我,道長(zhǎng)庵楷,這世上最難降的妖魔是什么罢艾? 我笑而不...
    開封第一講書人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮尽纽,結(jié)果婚禮上咐蚯,老公的妹妹穿的比我還像新娘。我一直安慰自己弄贿,他們只是感情好仓蛆,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著挎春,像睡著了一般看疙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上直奋,一...
    開封第一講書人閱讀 51,554評(píng)論 1 305
  • 那天能庆,我揣著相機(jī)與錄音,去河邊找鬼脚线。 笑死搁胆,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的邮绿。 我是一名探鬼主播渠旁,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼船逮!你這毒婦竟也來了顾腊?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤挖胃,失蹤者是張志新(化名)和其女友劉穎杂靶,沒想到半個(gè)月后梆惯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吗垮,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年垛吗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片烁登。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡怯屉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出饵沧,到底是詐尸還是另有隱情锨络,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布捷泞,位于F島的核電站足删,受9級(jí)特大地震影響寿谴,放射性物質(zhì)發(fā)生泄漏锁右。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一讶泰、第九天 我趴在偏房一處隱蔽的房頂上張望咏瑟。 院中可真熱鬧,春花似錦痪署、人聲如沸码泞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽余寥。三九已至,卻和暖如春悯森,著一層夾襖步出監(jiān)牢的瞬間宋舷,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來泰國打工瓢姻, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留祝蝠,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓幻碱,卻偏偏與公主長(zhǎng)得像绎狭,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子褥傍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

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