Docker-12-容器網(wǎng)絡(luò)

要構(gòu)建具有安全的一致行為的web應(yīng)用程序,可以使用Docker網(wǎng)絡(luò)特性.根據(jù)定義,網(wǎng)絡(luò)為容器實現(xiàn)了完全隔離.因此,控制應(yīng)用程序所在的網(wǎng)絡(luò)很重要,Docker容器網(wǎng)絡(luò)為您提供了這種控制能力.

默認(rèn)網(wǎng)絡(luò)

docker提供了三種網(wǎng)絡(luò),可以通過docker network ls命令去查看,結(jié)果如下:

image

前面三個就是docker默認(rèn)提供的,運行容器的時候可以通過--net來指定網(wǎng)絡(luò),先來看下這三個默認(rèn)的網(wǎng)絡(luò)分別是怎樣的

  • bridge: 表示所有Docker安裝中都存在的docker0網(wǎng)絡(luò). 除非使用docker run --net=<network>選項另行指定,否則Docker守護(hù)進(jìn)程默認(rèn)情況下會將容器連接到此網(wǎng)絡(luò),在主機上使用ifconfig命令,可以看到此網(wǎng)橋是主機的網(wǎng)絡(luò)堆棧的一部分
  • none: 意味著不指定網(wǎng)絡(luò),使用這個網(wǎng)絡(luò)的容器中沒有網(wǎng)卡.
  • host: 會將容器加入宿主機所在的網(wǎng)絡(luò)中,在使用這個網(wǎng)絡(luò)的容器中其網(wǎng)絡(luò)配置和宿主機一樣

bridge網(wǎng)絡(luò)詳解

查看bridge網(wǎng)絡(luò)的詳細(xì)信息,命令如下:

docker network inspect bridge

返回值:

[
    {
        "Name": "bridge",
        "Id": "e73fffb9d7ea78c02f9fdcabd33377054ae1f391ed883d8b4c6141f2ee99b101",
        "Created": "2019-04-23T09:36:04.07923852+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.17.0.0/16",
                    "Gateway": "172.17.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Containers": {
            "dc37d28c293f8568e396f2c788b43f1fc1e293b88f85232a6c5ae550a099493e": {
                "Name": "registry",
                "EndpointID": "8d31b605406c7aa857366af422eca1e859cbb6610bb4a166c61c893866f006df",
                "MacAddress": "02:42:ac:11:00:02",
                "IPv4Address": "172.17.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {
            "com.docker.network.bridge.default_bridge": "true",
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "true",
            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "docker0",
            "com.docker.network.driver.mtu": "1500"
        },
        "Labels": {}
    }
]

看一下返回值中的Containers,就是所有使用這個網(wǎng)絡(luò)的容器的信息,上面這個返回值里面的容器就是我們上文中搭建docker倉庫的那個容器

在這個網(wǎng)絡(luò)中的容器,互相之間可以通過ip進(jìn)行通信,Docker不支持默認(rèn)的bridge網(wǎng)絡(luò)上的服務(wù)發(fā)現(xiàn)(automatic service discovery),如果你希望默認(rèn)的bridge網(wǎng)絡(luò)上的容器之間能夠通過名字互相通信,需要在docker run命令中指定--link標(biāo)識

默認(rèn)的docker0網(wǎng)絡(luò)上支持通過端口映射或是使用--link來進(jìn)行通信,但這種方法很笨重且容易出錯,不建議在以后的應(yīng)用中使用.

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

為了很好的實現(xiàn)容器之間的網(wǎng)絡(luò)隔離,可以使用自定義網(wǎng)絡(luò),Docker提供了一些網(wǎng)絡(luò)驅(qū)動器(network driver)來方便用戶自定義網(wǎng)絡(luò),你可以創(chuàng)建bridge networkoverlay network,也可以通過創(chuàng)建自己的網(wǎng)絡(luò)插件.

你可以創(chuàng)建許多網(wǎng)絡(luò),Docker支持將一個容器加入多個網(wǎng)絡(luò),只有在同一個網(wǎng)絡(luò)中的容器之間才可以相互通信,而不能跨網(wǎng)絡(luò)通信.

創(chuàng)建bridge網(wǎng)絡(luò)

創(chuàng)建自定義網(wǎng)絡(luò)最簡單的方式就是創(chuàng)建一個bridge網(wǎng)絡(luò).這樣創(chuàng)建的網(wǎng)絡(luò)和之間介紹的docker0網(wǎng)絡(luò)很像. 命令如下:

docker network create --driver bridge isolated_nw
image

創(chuàng)建完成之后,容器就可以使用了.在docker run命令中加入?yún)?shù),--net=isolated_nw就ok了

同時在容器運行過程中,也可以指定網(wǎng)絡(luò),命令如下:

docker network connect 網(wǎng)絡(luò)名/id 容器名/id 

我們上面創(chuàng)建的這個網(wǎng)絡(luò)中,加入這個bridge網(wǎng)絡(luò)的容器必須在同一個宿主機上,同一個網(wǎng)絡(luò)中的容器之間可以直接通信,但不能和不同網(wǎng)絡(luò)的容器通信.其示意圖如下:

image

在用戶自定義的bridge網(wǎng)絡(luò)中,--link是不支持的,如果你希望外部網(wǎng)絡(luò)可以訪問容器中的應(yīng)用,可以通過對外暴露端口(expose port)的方式完成.

如果你希望在單個宿主機上創(chuàng)建一個小型網(wǎng)絡(luò),bridge網(wǎng)絡(luò)是很有用的.但如果想創(chuàng)建更大的網(wǎng)絡(luò),尤其是跨越多個宿主機的網(wǎng)絡(luò),那就需要創(chuàng)建overlay網(wǎng)絡(luò)

overlay網(wǎng)絡(luò)這里先不做介紹,想了解的同學(xué)可以看這里:原文地址

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末调俘,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子礼饱,更是在濱河造成了極大的恐慌抚吠,老刑警劉巖诈皿,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡姑裂,警方通過查閱死者的電腦和手機信粮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進(jìn)店門黔攒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人强缘,你說我怎么就攤上這事督惰。” “怎么了旅掂?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵赏胚,是天一觀的道長。 經(jīng)常有香客問我商虐,道長觉阅,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任称龙,我火速辦了婚禮留拾,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鲫尊。我一直安慰自己痴柔,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布疫向。 她就那樣靜靜地躺著咳蔚,像睡著了一般豪嚎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上谈火,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天侈询,我揣著相機與錄音,去河邊找鬼糯耍。 笑死扔字,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的温技。 我是一名探鬼主播革为,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼舵鳞!你這毒婦竟也來了震檩?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蜓堕,失蹤者是張志新(化名)和其女友劉穎抛虏,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體套才,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡迂猴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了霜旧。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片错忱。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡儡率,死狀恐怖挂据,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情儿普,我是刑警寧澤崎逃,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站眉孩,受9級特大地震影響个绍,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜浪汪,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一巴柿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧死遭,春花似錦广恢、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽至非。三九已至,卻和暖如春糠聪,著一層夾襖步出監(jiān)牢的瞬間荒椭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工舰蟆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留趣惠,地道東北人。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓身害,卻偏偏與公主長得像信卡,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子题造,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,512評論 2 359

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