成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

Docker網(wǎng)絡(luò)解讀

Drummor / 1728人閱讀

摘要:在版本之后,引入了一套子命令來(lái)管理網(wǎng)絡(luò)。具體來(lái)說(shuō),網(wǎng)絡(luò)是通過(guò)一個(gè)叫的東西來(lái)進(jìn)行管理的,用命令對(duì)網(wǎng)絡(luò)進(jìn)行操作實(shí)際上是與進(jìn)行交互。內(nèi)置有五種網(wǎng)絡(luò)驅(qū)動(dòng),分別是驅(qū)動(dòng)驅(qū)動(dòng)驅(qū)動(dòng)驅(qū)動(dòng)驅(qū)動(dòng)。這些網(wǎng)絡(luò)驅(qū)動(dòng)為提供了多種網(wǎng)絡(luò)模式。

libnetwork

docker在1.9版本之后,引入了一套docker network子命令來(lái)管理docker網(wǎng)絡(luò)。這允許用戶可以根據(jù)他們應(yīng)用的拓?fù)浣Y(jié)構(gòu)創(chuàng)建虛擬網(wǎng)絡(luò)并將容器接入其所對(duì)應(yīng)的網(wǎng)絡(luò)。

具體來(lái)說(shuō),docker網(wǎng)絡(luò)是通過(guò)一個(gè)叫l(wèi)ibnetwork的東西來(lái)進(jìn)行管理的,用docker network命令對(duì)docker網(wǎng)絡(luò)進(jìn)行操作實(shí)際上是與libnetwork Api進(jìn)行交互。

libnetwork內(nèi)置有五種網(wǎng)絡(luò)驅(qū)動(dòng),分別是:bridge驅(qū)動(dòng)、host驅(qū)動(dòng)、overlay驅(qū)動(dòng)、remote驅(qū)動(dòng)、null驅(qū)動(dòng)。這些網(wǎng)絡(luò)驅(qū)動(dòng)為docker提供了多種網(wǎng)絡(luò)模式。下面我們簡(jiǎn)單說(shuō)說(shuō)各驅(qū)動(dòng)的作用:

bridge驅(qū)動(dòng)

bridge驅(qū)動(dòng)即為通常說(shuō)的橋接模式,此驅(qū)動(dòng)為Docker的默認(rèn)驅(qū)動(dòng),該驅(qū)動(dòng)的作用為將Docker容器連接到docker默認(rèn)創(chuàng)建的docker0網(wǎng)橋上面,如果未指定--network選項(xiàng),創(chuàng)建的容器將默認(rèn)指向docker0,該驅(qū)動(dòng)即對(duì)應(yīng)docker的bridge網(wǎng)絡(luò)模式,通過(guò)NAT地址轉(zhuǎn)換使容器和外界進(jìn)行通信。

可使用如下命令查看docker0網(wǎng)橋,該網(wǎng)橋會(huì)在docker安裝后自動(dòng)配置:

ip addr

我們可以看到默認(rèn)的docker0網(wǎng)橋ip為172.17.0.1/16,在某些情況下假如我們宿主機(jī)網(wǎng)段與docker0網(wǎng)段相同,我們用bridge模式默認(rèn)的docker0網(wǎng)橋會(huì)與宿主機(jī)產(chǎn)生網(wǎng)段沖突問(wèn)題,這時(shí)候只需要更改docker0默認(rèn)的網(wǎng)段或者使用docker容器的--network選項(xiàng)選擇用戶自定義的網(wǎng)橋即可解決。

host驅(qū)動(dòng)

該驅(qū)動(dòng)將docker容器與宿主機(jī)網(wǎng)絡(luò)處于同一個(gè)network namespace下,docker容器將使用宿主機(jī)的網(wǎng)卡、ip和端口信息,故容器與外界不進(jìn)行NAT地址轉(zhuǎn)換,增加了網(wǎng)絡(luò)性能,但是缺點(diǎn)是宿主機(jī)上已使用的端口docker容器不能再使用,該驅(qū)動(dòng)對(duì)應(yīng)docker的host網(wǎng)絡(luò)模式。

overlay驅(qū)動(dòng)

此驅(qū)動(dòng)采用IETE標(biāo)準(zhǔn)的VXLAN方式,具體VXLAN實(shí)現(xiàn)方式這里暫不說(shuō)明,該驅(qū)動(dòng)主要用于創(chuàng)建容器的跨主機(jī)網(wǎng)絡(luò),對(duì)應(yīng)docker的user-defined網(wǎng)絡(luò)模式。

remote驅(qū)動(dòng)

這個(gè)驅(qū)動(dòng)用于用戶向libnetwork提供自定義的網(wǎng)絡(luò)插件,并沒(méi)有實(shí)現(xiàn)任何網(wǎng)絡(luò)功能。

null驅(qū)動(dòng)

null驅(qū)動(dòng)即為docker容器的none網(wǎng)絡(luò)模式,該模式并為docker容器提供任何網(wǎng)絡(luò)配置,只有docker容器自身的lo網(wǎng)卡,該模式一般用于一些特定的情況。

bridge網(wǎng)絡(luò)模式的實(shí)現(xiàn)方式

我們常用的docker網(wǎng)絡(luò)模式一般都是bridge模式,下面我們來(lái)分析docker是如何實(shí)現(xiàn)橋接網(wǎng)絡(luò)的。

首先我們可以通過(guò)如下命令查看docker0網(wǎng)關(guān):

route -n

從如上命令可以看出所有指向ip為172.17.0.0/16的數(shù)據(jù)包都從docker0網(wǎng)卡轉(zhuǎn)發(fā)。

然后我們用docker run命令啟動(dòng)一個(gè)容器名為demo,進(jìn)入容器demo,同樣用ip addr或ifconfig命令查看網(wǎng)卡,我們可以看到如下兩個(gè)網(wǎng)卡:

lo網(wǎng)卡和eth0網(wǎng)卡。lo網(wǎng)卡即為容器自身的回環(huán)網(wǎng)卡,eth0網(wǎng)卡ip為172.17.0.3/16,和宿主機(jī)網(wǎng)卡docker0在同一網(wǎng)段,這時(shí)我們用route -n命令查看demo容器的網(wǎng)關(guān)如下:

可以看出demo的eth0網(wǎng)卡與宿主機(jī)的docker0網(wǎng)卡是相互連通的。

這時(shí)退出demo容器再來(lái)用ip addr查看宿主機(jī)的網(wǎng)絡(luò)設(shè)備,會(huì)發(fā)現(xiàn)有一塊以“veth”開(kāi)頭的網(wǎng)卡,如veth5653371,我們可以猜測(cè)veth5653371與demo容器內(nèi)的eth0網(wǎng)卡是一對(duì)veth設(shè)備(veth pair總是成對(duì)出現(xiàn)),veth設(shè)備的作用為用來(lái)連接兩個(gè)不同的network namespace,故docker0不是單純的網(wǎng)卡而是網(wǎng)橋了,這就是docker的bridge網(wǎng)絡(luò)模式的實(shí)現(xiàn)方式,通過(guò)連接docker0網(wǎng)橋來(lái)實(shí)現(xiàn)宿主機(jī)和容器的網(wǎng)絡(luò)互通。

iptables規(guī)則實(shí)現(xiàn)端口映射

我們知道了docker的bridge網(wǎng)絡(luò)模式的網(wǎng)絡(luò)互通方式,那么docker是如何實(shí)現(xiàn)宿主機(jī)和容器的端口映射的呢?這一切都靠配置iptables規(guī)則來(lái)實(shí)現(xiàn),具體表現(xiàn)如下:

Docker安裝完成后,將默認(rèn)在宿主機(jī)系統(tǒng)上增加一些iptables規(guī)則,用iptables-save命令查看以下規(guī)則:

-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE

上面這條規(guī)則關(guān)系著Docker容器和外界的通信,含義是:將源地址為172.17.0.0/16的數(shù)據(jù)包(即Docker容器發(fā)出的數(shù)據(jù)),當(dāng)不是從docker0網(wǎng)卡發(fā)出時(shí)做SNAT。這樣docker容器訪問(wèn)外部的流量會(huì)認(rèn)為是宿主機(jī)發(fā)出的。

同理,docker容器和宿主機(jī)的端口映射也是通過(guò)iptalbes映射來(lái)實(shí)現(xiàn)的,假設(shè)我們啟動(dòng)一個(gè)容器將其端口8080映射到宿主機(jī)端口8080上,我們可以看到如下規(guī)則:

-A POSTROUTING -s 172.17.0.3/16 -d 172.17.0.3/16 -p tcp -m tcp --dport 8080 -j MASQUERADE
-A DOCKER -d 172.17.0.3/16 ! -i docker0 -o docker0 -p tcp -m tcp --dport 8080 -j ACCEPT

該規(guī)則將訪問(wèn)宿主機(jī)8080端口的流量轉(zhuǎn)發(fā)到172.17.0.3/16(即demo容器的etho網(wǎng)卡)上,所以docker是通過(guò)配置iptalbes規(guī)則來(lái)實(shí)現(xiàn)端口映射的。

不同宿主機(jī)容器網(wǎng)絡(luò)互通

到目前為止,我們所講的docker網(wǎng)絡(luò)環(huán)境僅僅是對(duì)單機(jī)而言的,要實(shí)現(xiàn)不同宿主機(jī)的網(wǎng)絡(luò)互通常常有多種方式,我這里選用的是flannel來(lái)實(shí)現(xiàn)不同宿主機(jī)容器的網(wǎng)絡(luò)互通,這也是kubernetes實(shí)現(xiàn)網(wǎng)絡(luò)互通的方式,要想知道flannel是如何實(shí)現(xiàn)網(wǎng)絡(luò)互通的,請(qǐng)查看我的下一篇博文:flannel解讀

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/27571.html

相關(guān)文章

  • docker系列--網(wǎng)絡(luò)模式解讀

    摘要:網(wǎng)絡(luò)主要是單機(jī)網(wǎng)絡(luò)和多主機(jī)通信模式。下面分別介紹一下的各個(gè)網(wǎng)絡(luò)模式。設(shè)計(jì)的網(wǎng)絡(luò)模型。是以對(duì)定義的元數(shù)據(jù)。用戶可以通過(guò)定義這樣的元數(shù)據(jù)來(lái)自定義和驅(qū)動(dòng)的行為。 前言 理解docker,主要從namesapce,cgroups,聯(lián)合文件,運(yùn)行時(shí)(runC),網(wǎng)絡(luò)幾個(gè)方面。接下來(lái)我們會(huì)花一些時(shí)間,分別介紹。 docker系列--namespace解讀 docker系列--cgroups解讀 ...

    haitiancoder 評(píng)論0 收藏0
  • docker系列--網(wǎng)絡(luò)模式解讀

    摘要:網(wǎng)絡(luò)主要是單機(jī)網(wǎng)絡(luò)和多主機(jī)通信模式。下面分別介紹一下的各個(gè)網(wǎng)絡(luò)模式。設(shè)計(jì)的網(wǎng)絡(luò)模型。是以對(duì)定義的元數(shù)據(jù)。用戶可以通過(guò)定義這樣的元數(shù)據(jù)來(lái)自定義和驅(qū)動(dòng)的行為。 前言 理解docker,主要從namesapce,cgroups,聯(lián)合文件,運(yùn)行時(shí)(runC),網(wǎng)絡(luò)幾個(gè)方面。接下來(lái)我們會(huì)花一些時(shí)間,分別介紹。 docker系列--namespace解讀 docker系列--cgroups解讀 ...

    zollero 評(píng)論0 收藏0
  • docker系列--網(wǎng)絡(luò)模式解讀

    摘要:網(wǎng)絡(luò)主要是單機(jī)網(wǎng)絡(luò)和多主機(jī)通信模式。下面分別介紹一下的各個(gè)網(wǎng)絡(luò)模式。設(shè)計(jì)的網(wǎng)絡(luò)模型。是以對(duì)定義的元數(shù)據(jù)。用戶可以通過(guò)定義這樣的元數(shù)據(jù)來(lái)自定義和驅(qū)動(dòng)的行為。 前言 理解docker,主要從namesapce,cgroups,聯(lián)合文件,運(yùn)行時(shí)(runC),網(wǎng)絡(luò)幾個(gè)方面。接下來(lái)我們會(huì)花一些時(shí)間,分別介紹。 docker系列--namespace解讀 docker系列--cgroups解讀 ...

    xiaotianyi 評(píng)論0 收藏0
  • docker系列--cgroups解讀

    摘要:系列解讀系列解讀系列解讀系列解讀系列網(wǎng)絡(luò)模式解讀主要是隔離作用,主要是資源限制,聯(lián)合文件主要用于鏡像分層存儲(chǔ)和管理,是運(yùn)行時(shí),遵循了接口,一般來(lái)說(shuō)基于。凍結(jié)暫停中的進(jìn)程。配置時(shí)間都以微秒為單位,文件名中用表示。 前言 理解docker,主要從namesapce,cgroups,聯(lián)合文件,運(yùn)行時(shí)(runC),網(wǎng)絡(luò)幾個(gè)方面。接下來(lái)我們會(huì)花一些時(shí)間,分別介紹。 docker系列--name...

    岳光 評(píng)論0 收藏0
  • docker系列--cgroups解讀

    摘要:系列解讀系列解讀系列解讀系列解讀系列網(wǎng)絡(luò)模式解讀主要是隔離作用,主要是資源限制,聯(lián)合文件主要用于鏡像分層存儲(chǔ)和管理,是運(yùn)行時(shí),遵循了接口,一般來(lái)說(shuō)基于。凍結(jié)暫停中的進(jìn)程。配置時(shí)間都以微秒為單位,文件名中用表示。 前言 理解docker,主要從namesapce,cgroups,聯(lián)合文件,運(yùn)行時(shí)(runC),網(wǎng)絡(luò)幾個(gè)方面。接下來(lái)我們會(huì)花一些時(shí)間,分別介紹。 docker系列--name...

    cikenerd 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<