成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

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

我們?cè)谑褂胐ocker run創(chuàng)建Docker容器時(shí),可以用--net選項(xiàng)指定容器的網(wǎng)絡(luò)模式,Docker有以下4種網(wǎng)絡(luò)模式:
1.host模式,使用--net=host指定。

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供木壘哈薩克網(wǎng)站建設(shè)、木壘哈薩克做網(wǎng)站、木壘哈薩克網(wǎng)站設(shè)計(jì)、木壘哈薩克網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、木壘哈薩克企業(yè)網(wǎng)站模板建站服務(wù),十年木壘哈薩克做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

2.container模式,使用--net=container:NAME_or_ID指定。

3.none模式,使用--net=none指定。

4.bridge模式,使用--net=bridge指定,默認(rèn)設(shè)置

5.overlay模式:使用--net=overlay(覆蓋網(wǎng)絡(luò),跨主機(jī)通信)

一、host模式

Docker使用的網(wǎng)絡(luò)實(shí)際上和宿主機(jī)一樣,在容器內(nèi)看到的網(wǎng)卡ip是宿主機(jī)上的ip。

眾所周知,Docker使用了Linux的Namespaces技術(shù)來進(jìn)行資源隔離,如PID Namespace隔離進(jìn)程,Mount Namespace隔離文件系統(tǒng),Network Namespace隔離網(wǎng)絡(luò)等。一個(gè)Network Namespace提供了一份獨(dú)立的網(wǎng)絡(luò)環(huán)境,包括網(wǎng)卡、路由、Iptable規(guī)則等都與其他的Network Namespace隔離。一個(gè)Docker容器一般會(huì)分配一個(gè)獨(dú)立的Network Namespace。但如果啟動(dòng)容器的時(shí)候使用host模式,那么這個(gè)容器將不會(huì)獲得一個(gè)獨(dú)立的Network Namespace,而是和宿主機(jī)共用一個(gè)Network Namespace。容器將不會(huì)虛擬出自己的網(wǎng)卡,配置自己的IP等,而是使用宿主機(jī)的IP和端口

docker run -it --net=host centos /bin/bash
docker網(wǎng)絡(luò)模式
可以看到容器內(nèi)網(wǎng)卡直接復(fù)用宿主機(jī)網(wǎng)絡(luò),該模式將禁用Docker容器的網(wǎng)絡(luò)隔離
docker網(wǎng)絡(luò)模式

二、container模式
多個(gè)容器使用共同的網(wǎng)絡(luò)看到的ip是一樣的。

在理解了host模式后,這個(gè)模式也就好理解了。這個(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è)備通信

例子:
docker run -it --net=container:169c875f4ba0 centos /bin/bash (復(fù)用169c875f4ba0容器的網(wǎng)絡(luò))
docker網(wǎng)絡(luò)模式
可以看出和容器169c875f4ba0的網(wǎng)絡(luò)環(huán)境一樣

三、none模式
這種模式下不會(huì)配置任何網(wǎng)絡(luò)。

這個(gè)模式和前兩個(gè)不同。在這種模式下,Docker容器擁有自己的Network Namespace,但是,并不為Docker容器進(jìn)行任何網(wǎng)絡(luò)配置。也就是說,這個(gè)Docker容器沒有網(wǎng)卡、IP、路由等信息。需要我們自己為Docker容器添加網(wǎng)卡、配置IP等。
例子:
docker run -it --net=none centos /bin/bash
docker網(wǎng)絡(luò)模式
可以看出,并沒有配置網(wǎng)卡信息,需要自己手動(dòng)配置
docker網(wǎng)絡(luò)模式

四、bridge模式
bridge模式是Docker默認(rèn)的網(wǎng)絡(luò)設(shè)置,此模式會(huì)為每一個(gè)容器分配Network Namespace、設(shè)置IP等,并將一個(gè)主機(jī)上的Docker容器連接到一個(gè)虛擬網(wǎng)橋上。

同一個(gè)宿主機(jī)上的所有容器會(huì)在同一個(gè)網(wǎng)段下,相互之間是可以通信的

例子:
docker run -it --net=bridge centos /bin/bash
docker網(wǎng)絡(luò)模式

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

對(duì)比宿主機(jī)網(wǎng)橋,發(fā)現(xiàn)容器內(nèi)網(wǎng)卡和宿主機(jī)網(wǎng)橋在同一網(wǎng)段.
通過網(wǎng)橋和外界通信
docker網(wǎng)絡(luò)模式

五、overlay neetwork模式(跨主機(jī)通信)
容器在兩個(gè)跨主機(jī)進(jìn)行通信的時(shí)候,是使用overlay network這個(gè)網(wǎng)絡(luò)模式進(jìn)行通信,如果使用host也可以實(shí)現(xiàn)跨主機(jī)進(jìn)行通信,直接使用這個(gè)物理的ip地址就可以進(jìn)行通信。overlay它會(huì)虛擬出一個(gè)網(wǎng)絡(luò),在這個(gè)overlay網(wǎng)絡(luò)模式里面,有一個(gè)類似于服務(wù)網(wǎng)關(guān)的地址,然后把這個(gè)包轉(zhuǎn)發(fā)到物理服務(wù)器這個(gè)地址,最終通過路由和交換,到達(dá)另一個(gè)服務(wù)器的ip地址
在docker容器里面overlay 是怎么實(shí)現(xiàn)的呢

例子:
宿主機(jī):172.16.1.56,172.16.1.57 修改
vim /lib/systemd/system/docker.service
docker網(wǎng)絡(luò)模式
修改啟動(dòng)參數(shù)
--cluster-store 指定 consul 的地址。
--cluster-advertise 告知 consul 自己的連接地址。
之后重啟docker
systemctl daemon-reload
systemctl restart docker.service

使用docker部署服務(wù)發(fā)現(xiàn)工具consul
docker run -d -p 8400:8400 -p 8500:8500 -p 8600:53/udp -h consul progrium/consul -server -bootstrap -ui-dir /ui

http://172.16.1.57:8500/
可以看到已經(jīng)存在的服務(wù)
docker網(wǎng)絡(luò)模式

查看目前的網(wǎng)絡(luò)模式
docker網(wǎng)絡(luò)模式
創(chuàng)建overlay網(wǎng)絡(luò)
docker網(wǎng)絡(luò)模式
-d overlay: 指定driver為overlay
可以注意到ov_net1的scope為global

在另一臺(tái)機(jī)器傻女查看網(wǎng)絡(luò)模式
docker網(wǎng)絡(luò)模式
發(fā)現(xiàn)也存在ov_net1網(wǎng)絡(luò)

查看網(wǎng)絡(luò)詳細(xì)信息
docker網(wǎng)絡(luò)模式

創(chuàng)建容器
docker run -it --net=ov_net1 centos /bin/bash
docker網(wǎng)絡(luò)模式
發(fā)現(xiàn)兩個(gè)不同主機(jī)的容器可以ping通

恢復(fù)netns命名空間
執(zhí)行下面的命令來獲取容器進(jìn)程號(hào)
docker inspect adaea943f075|grep Pid

ln -s /proc/26398/ns/net /var/run/netns/adaea943f075(容器id) #netns目錄不存在則創(chuàng)建

查看網(wǎng)絡(luò)空間
docker網(wǎng)絡(luò)模式

恢復(fù)docker容器netns
ln -s /var/run/docker/netns /var/run/netns

查看指定網(wǎng)絡(luò)命名空間的網(wǎng)絡(luò)
ip netns exec 1-46663fb66b ip addr
docker網(wǎng)絡(luò)模式

查看網(wǎng)絡(luò)網(wǎng)卡
ip netns exec 1-46663fb66b brctl show

實(shí)現(xiàn)步驟
從這個(gè)通信過程中來看,跨主機(jī)通信過程中的步驟如下:

容器的網(wǎng)絡(luò)命名空間與overlay網(wǎng)絡(luò)的網(wǎng)絡(luò)命名空間通過一對(duì)veth pair連接起來,當(dāng)容器對(duì)外通信時(shí),veth pair起到網(wǎng)線的作用,將流量發(fā)送到overlay網(wǎng)絡(luò)的網(wǎng)絡(luò)命名空間中。
容器的veth pair對(duì)端eth3與vxlan設(shè)備通過br0這個(gè)Linux bridge橋接在一起,br0在同一宿主機(jī)上起到虛擬機(jī)交換機(jī)的作用,如果目標(biāo)地址在同一宿主機(jī)上,則直接通信,如果不再則通過設(shè)置在vxlan1這個(gè)vxlan設(shè)備進(jìn)行跨主機(jī)通信。
vxlan1設(shè)備上會(huì)在創(chuàng)建時(shí),由docker daemon為其分配vxlan隧道ID,起到網(wǎng)絡(luò)隔離的作用。
docker主機(jī)集群通過key/value存儲(chǔ)共享數(shù)據(jù),在7946端口上,相互之間通過gossip協(xié)議學(xué)習(xí)各個(gè)宿主機(jī)上運(yùn)行了哪些容器。守護(hù)進(jìn)程根據(jù)這些數(shù)據(jù)來在vxlan1設(shè)備上生成靜態(tài)MAC轉(zhuǎn)發(fā)表。
根據(jù)靜態(tài)MAC轉(zhuǎn)發(fā)表的設(shè)置,通過UDP端口4789,將流量轉(zhuǎn)發(fā)到對(duì)端宿主機(jī)的網(wǎng)卡上。
根據(jù)流量包中的vxlan隧道ID,將流量轉(zhuǎn)發(fā)到對(duì)端宿主機(jī)的overlay網(wǎng)絡(luò)的網(wǎng)絡(luò)命名空間中。
對(duì)端宿主機(jī)的overlay網(wǎng)絡(luò)的網(wǎng)絡(luò)命名空間中br0網(wǎng)橋,起到虛擬交換機(jī)的作用,將流量根據(jù)MAC地址轉(zhuǎn)發(fā)到對(duì)應(yīng)容器內(nèi)部。
雖然上面的網(wǎng)絡(luò)通信模型可以實(shí)現(xiàn)容器的跨主機(jī)通信,但還是有一些缺陷,造成實(shí)際使用上的不便,例如:

由于vxlan網(wǎng)絡(luò)與宿主機(jī)網(wǎng)絡(luò)默認(rèn)不再同一網(wǎng)絡(luò)環(huán)境下,為了解決宿主機(jī)與容器的通信問題,docker為overlay網(wǎng)絡(luò)中的容器額外增加了網(wǎng)卡eth2作為宿主機(jī)與容器通信的通道。這樣在使用容器服務(wù)時(shí),就必須根據(jù)訪問性質(zhì)的不同,選擇不同的網(wǎng)卡地址,造成使用上的不便。
容器對(duì)外暴露服務(wù)仍然只能使用端口綁定的方式,外界無法簡(jiǎn)單地直接使用容器IP訪問容器服務(wù)。
從上面的通信過程中來看,原生的overlay網(wǎng)絡(luò)通信必須依賴docker守護(hù)進(jìn)程及key/value存儲(chǔ)來實(shí)現(xiàn)網(wǎng)絡(luò)通信,約束較多,容器在啟動(dòng)后的一段時(shí)間內(nèi)可能無法跨主機(jī)通信,這對(duì)一些比較敏感的應(yīng)用來說是不可靠的。
docker網(wǎng)絡(luò)模式

不通overlay network網(wǎng)絡(luò)空間的容器如何通信
使用連接網(wǎng)絡(luò)
docker network connect ov_net1 containId(容器名或者ID) (該容器位于另一個(gè)網(wǎng)絡(luò)空間)

本文標(biāo)題:docker網(wǎng)絡(luò)模式
文章URL:http://jinyejixie.com/article4/ggidoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、軟件開發(fā)、網(wǎng)站策劃、企業(yè)建站、域名注冊(cè)服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁(yè)設(shè)計(jì)公司
成都市| 济阳县| 贡嘎县| 留坝县| 东海县| 青田县| 青岛市| 松滋市| 宝山区| 隆化县| 会同县| 郸城县| 朝阳市| 若尔盖县| 陕西省| 平远县| 嘉善县| 黄大仙区| 惠东县| 门头沟区| 宜宾县| 灌南县| 利川市| 和政县| 阿巴嘎旗| 金昌市| 铁岭市| 长岭县| 江油市| 石渠县| 青铜峡市| 内黄县| 旌德县| 桐柏县| 醴陵市| 西林县| 菏泽市| 兰溪市| 文安县| 海原县| 陇南市|