欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

docker部署Macvlan實(shí)現(xiàn)跨主機(jī)網(wǎng)絡(luò)通信的實(shí)現(xiàn)

今天就跟大家聊聊有關(guān)docker部署Macvlan實(shí)現(xiàn)跨主機(jī)網(wǎng)絡(luò)通信的實(shí)現(xiàn),可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

創(chuàng)新互聯(lián)公司主營(yíng)天涯網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,重慶App定制開(kāi)發(fā),天涯h5成都小程序開(kāi)發(fā)搭建,天涯網(wǎng)站營(yíng)銷(xiāo)推廣歡迎天涯等地區(qū)企業(yè)咨詢(xún)

基本概念:

Macvlan工作原理:

Macvlan是Linux內(nèi)核支持的網(wǎng)絡(luò)接口。要求的Linux內(nèi)部版本是v3.9–3.19和4.0+;通過(guò)為物理網(wǎng)卡創(chuàng)建Macvlan子接口,允許一塊物理網(wǎng)卡擁有多個(gè)獨(dú)立的MAC地址和IP地址。虛擬出來(lái)的子接口將直接暴露在相鄰物理網(wǎng)絡(luò)中。從外部看來(lái),就像是把網(wǎng)線(xiàn)隔開(kāi)多股,分別接受了不同的主機(jī)上一樣;物理網(wǎng)卡收到包后,會(huì)根據(jù)收到包的目的MAC地址判斷這個(gè)包需要交給其中虛擬網(wǎng)卡。

當(dāng)容器需要直連入物理網(wǎng)絡(luò)時(shí),可以使用Macvlan。Macvlan本身不創(chuàng)建網(wǎng)絡(luò),本質(zhì)上首先使宿主機(jī)物理網(wǎng)卡工作在‘混雜模式',這樣物理網(wǎng)卡的MAC地址將會(huì)失效,所有二層網(wǎng)絡(luò)中的流量物理網(wǎng)卡都能收到。接下來(lái)就是在這張物理網(wǎng)卡上創(chuàng)建虛擬網(wǎng)卡,并為虛擬網(wǎng)卡指定MAC地址,實(shí)現(xiàn)一卡多用,在物理網(wǎng)絡(luò)看來(lái),每張?zhí)摂M網(wǎng)卡都是一個(gè)單獨(dú)的接口。

使用Macvlan需要注意以下幾點(diǎn):
  • 容器直接連接物理網(wǎng)絡(luò),由物理網(wǎng)絡(luò)負(fù)責(zé)分配IP地址,可能的結(jié)果是物理網(wǎng)絡(luò)IP地址被耗盡,另一個(gè)后果是網(wǎng)絡(luò)性能問(wèn)題,物理網(wǎng)絡(luò)中接入的主機(jī)變多,廣播包占比快速升高而引起的網(wǎng)絡(luò)性能下降問(wèn)題;

  • 宿主機(jī)上的某張網(wǎng)上需要工作在‘混亂模式'下;

  • 前面說(shuō)到,工作在混亂模式下的物理網(wǎng)卡,其MAC地址會(huì)失效,所以,此模式中運(yùn)行的容器并不能與外網(wǎng)進(jìn)行通信,但是不會(huì)影響宿主機(jī)與外網(wǎng)通信;

  • 從長(zhǎng)遠(yuǎn)來(lái)看bridge網(wǎng)絡(luò)與overlay網(wǎng)絡(luò)是更好的選擇,原因就是虛擬網(wǎng)絡(luò)應(yīng)該與物理網(wǎng)絡(luò)隔離而不是共享。

項(xiàng)目環(huán)境:

兩臺(tái)docker主機(jī):(centos7)
docker01: 172.16.1.30
docker02: 172.16.1.31

項(xiàng)目操作:

實(shí)例一:macvlan跨主機(jī)單網(wǎng)絡(luò)解決方案:

docker01:

(1)開(kāi)啟ens33網(wǎng)卡的混雜模式,開(kāi)啟網(wǎng)卡的多個(gè)虛擬interface(接口)

[root@sqm-docker01 ~]# ip link set ens33 promisc on
##查看網(wǎng)卡的狀態(tài):
[root@sqm-docker01 ~]# ip link show ens33

docker部署Macvlan實(shí)現(xiàn)跨主機(jī)網(wǎng)絡(luò)通信的實(shí)現(xiàn)

(2)創(chuàng)建macvlan 網(wǎng)絡(luò):

[root@sqm-docker01 ~]# docker network create -d macvlan --subnet 172.16.100.0/24 --gateway 172.16.100.1 -o parent=ens33 mac_net1

參數(shù)解釋?zhuān)?br/>-o: 綁定在哪張網(wǎng)卡之上(基于ens33網(wǎng)卡)

(3)基于剛創(chuàng)建的網(wǎng)絡(luò)運(yùn)行一個(gè)容器:

[root@sqm-docker01 ~]# docker run -itd --name box1 --ip 172.16.100.10 --network mac_net1 busybox

docker部署Macvlan實(shí)現(xiàn)跨主機(jī)網(wǎng)絡(luò)通信的實(shí)現(xiàn)

docker02:(與docker01相同操作)

開(kāi)啟混雜模式
[root@sqm-docker02 ~]# ip link set ens33 promisc on
[root@sqm-docker02 ~]# ip link show ens33

docker部署Macvlan實(shí)現(xiàn)跨主機(jī)網(wǎng)絡(luò)通信的實(shí)現(xiàn)

//創(chuàng)建macvlan 網(wǎng)絡(luò)
[root@sqm-docker02 ~]# docker network create -d macvlan --subnet 172.16.100.0/24 --gateway 172.16.100.1 -o parent=ens33 mac_net1
//運(yùn)行一個(gè)容器:
[root@sqm-docker02 ~]# docker run -itd --name box2 --network mac_net1 --ip 172.16.100.20 busybox

(4)測(cè)試兩個(gè)主機(jī)間的兩個(gè)容器相互通信:

docker部署Macvlan實(shí)現(xiàn)跨主機(jī)網(wǎng)絡(luò)通信的實(shí)現(xiàn)

注意事項(xiàng):

能ping通的原因是兩個(gè)容器都是基于真實(shí)的ens33網(wǎng)卡的,所以宿主機(jī)上的ens33網(wǎng)卡必須能夠相互通信。這種方式只能夠ping通ip地址,是無(wú)法ping通容器名的。

實(shí)例二:macvlan跨主機(jī)多網(wǎng)絡(luò)解決方案:

(1)首先查看主機(jī)內(nèi)核的8021q模塊:

[root@sqm-docker01 ~]# modinfo 8021q

docker部署Macvlan實(shí)現(xiàn)跨主機(jī)網(wǎng)絡(luò)通信的實(shí)現(xiàn)

##如果沒(méi)有查看到該模塊,需要執(zhí)行以下命令進(jìn)行加載:
[root@sqm-docker01 ~]# modprobe 8021q
開(kāi)啟路由轉(zhuǎn)發(fā):
[root@sqm-docker01 ~]# echo "net.ipv4.ip_forward = 1" > /etc/sysctl.conf 
[root@sqm-docker01 ~]# sysctl -p
net.ipv4.ip_forward = 1

(2)修改網(wǎng)絡(luò)配置信息:

docker01:

[root@sqm-docker01 ~]# cd /etc/sysconfig/network-scripts/
[root@sqm-docker01 network-scripts]# ls

docker部署Macvlan實(shí)現(xiàn)跨主機(jī)網(wǎng)絡(luò)通信的實(shí)現(xiàn)

[root@sqm-docker01 network-scripts]# vim ifcfg-ens33

docker部署Macvlan實(shí)現(xiàn)跨主機(jī)網(wǎng)絡(luò)通信的實(shí)現(xiàn)

基于ens33網(wǎng)卡進(jìn)行創(chuàng)建子網(wǎng)卡:

[root@sqm-docker01 network-scripts]# cp -p ifcfg-ens33 ifcfg-ens33.10 #網(wǎng)卡名稱(chēng)自定義
[root@sqm-docker01 network-scripts]# cp -p ifcfg-ens33 ifcfg-ens33.20

-p:表示保留原有屬性(權(quán)限)

//修改ens33.10網(wǎng)卡:
[root@sqm-docker01 network-scripts]# vim ifcfg-ens33.10
##只保留以下選項(xiàng):

docker部署Macvlan實(shí)現(xiàn)跨主機(jī)網(wǎng)絡(luò)通信的實(shí)現(xiàn)

//修改ens33.20網(wǎng)卡:
[root@sqm-docker01 network-scripts]# vim ifcfg-ens33.20 
配置與ens33.10相同,只需修改ip地址:

docker部署Macvlan實(shí)現(xiàn)跨主機(jī)網(wǎng)絡(luò)通信的實(shí)現(xiàn)

(3)啟動(dòng)子網(wǎng)卡:

[root@sqm-docker01 network-scripts]# ifup ifcfg-ens33.10 
[root@sqm-docker01 network-scripts]# ifup ifcfg-ens33.20
//查看網(wǎng)絡(luò)信息
[root@sqm-docker01 network-scripts]# ifconfig

docker部署Macvlan實(shí)現(xiàn)跨主機(jī)網(wǎng)絡(luò)通信的實(shí)現(xiàn)

(4)基于ens33.10和ens33.20創(chuàng)建macvlan 網(wǎng)絡(luò):

注意:網(wǎng)段不同,網(wǎng)絡(luò)名稱(chēng)不同

[root@sqm-docker01 ~]# docker network create -d macvlan --subnet 172.16.200.0/24 --gateway 172.16.200.1 -o parent=ens33.10 mac_net10

[root@sqm-docker01 ~]# docker network create -d macvlan --subnet 172.16.210.0/24 --gateway 172.16.210.1 -o parent=ens33.20 mac_net20

(5)基于以上網(wǎng)絡(luò)分別運(yùn)行2個(gè)容器:

[root@sqm-docker01 ~]# docker run -itd --name test1 --ip 172.16.200.10 --network mac_net10 busybox

[root@sqm-docker01 ~]# docker run -itd --name test2 --ip 172.16.210.10 --network mac_net20 busybox

部署docker02:

基本與docker01操作相同,注意網(wǎng)段的相同,但主機(jī)ip得不同。

#以下操作將不做解釋?zhuān)?/p>

開(kāi)啟路由轉(zhuǎn)發(fā):
[root@sqm-docker01 ~]# echo "net.ipv4.ip_forward = 1" > /etc/sysctl.conf 
[root@sqm-docker01 ~]# sysctl -p
net.ipv4.ip_forward = 1
[root@sqm-docker02 network-scripts]# pwd
/etc/sysconfig/network-scripts
[root@sqm-docker02 network-scripts]# vim ifcfg-ens33

docker部署Macvlan實(shí)現(xiàn)跨主機(jī)網(wǎng)絡(luò)通信的實(shí)現(xiàn)

[root@sqm-docker02 network-scripts]# cp -p ifcfg-ens33 ifcfg-ens33.10
[root@sqm-docker02 network-scripts]# cp -p ifcfg-ens33 ifcfg-ens33.20
[root@sqm-docker02 network-scripts]# vim ifcfg-ens33.10

docker部署Macvlan實(shí)現(xiàn)跨主機(jī)網(wǎng)絡(luò)通信的實(shí)現(xiàn)

[root@sqm-docker02 network-scripts]# vim ifcfg-ens33.20

docker部署Macvlan實(shí)現(xiàn)跨主機(jī)網(wǎng)絡(luò)通信的實(shí)現(xiàn)

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

[root@sqm-docker02 network-scripts]# ifup ifcfg-ens33.10 [root@sqm-docker02 network-scripts]# ifup ifcfg-ens33.20
//創(chuàng)建macvlan 網(wǎng)絡(luò):[root@sqm-docker02 ~]# docker network create -d macvlan --subnet 172.16.200.0/24 --gateway 172.16.200.1 -o parent=ens33.10 mac_net10[root@sqm-docker02 ~]# docker network create -d macvlan --subnet 172.16.210.0/24 --gateway 172.16.210.1 -o parent=ens33.20 mac_net20
//運(yùn)行容器(ip地址不同):[root@sqm-docker02 ~]# docker run -itd --name test3 --network mac_net10 --ip 172.16.200.11 busybox[root@sqm-docker02 ~]# docker run -itd --name test4 --network mac_net20 --ip 172.16.210.11 busybox

//確保容器正常運(yùn)行
docker部署Macvlan實(shí)現(xiàn)跨主機(jī)網(wǎng)絡(luò)通信的實(shí)現(xiàn)

(6)測(cè)試容器之間能夠跨主機(jī)通信:(注意:如果你是vmware環(huán)境的話(huà),由于VMware虛擬機(jī)的原因,必須將兩臺(tái)主機(jī)默認(rèn)的NAT模式修改為橋接模式才能夠正常通信)
test3與test1通信(相同網(wǎng)段):
docker部署Macvlan實(shí)現(xiàn)跨主機(jī)網(wǎng)絡(luò)通信的實(shí)現(xiàn)

test4與test2通信(相同網(wǎng)段):
docker部署Macvlan實(shí)現(xiàn)跨主機(jī)網(wǎng)絡(luò)通信的實(shí)現(xiàn)

排錯(cuò)思路:如果部署完主機(jī)間無(wú)法通信的話(huà),首先確認(rèn)防火墻或iptables規(guī)則是否關(guān)閉或放行,是否禁用selinux,其次排查ens33的網(wǎng)卡配置文件及其子網(wǎng)卡內(nèi)容是否修改錯(cuò)誤,最后排查你創(chuàng)建macvlan 網(wǎng)絡(luò)是是否網(wǎng)段定義錯(cuò)誤,或者在運(yùn)行容器是否ip地址指定不正確。

----------------------macvlan多網(wǎng)絡(luò)跨主機(jī)實(shí)現(xiàn)通信部署完畢---------------------

擴(kuò)展知識(shí)點(diǎn):
假設(shè)我們運(yùn)行了一個(gè)t1容器,然后t2容器使用t1容器的網(wǎng)絡(luò)棧。

[root@sqm-docker03 ~]# docker run -itd --name  t1 busybox[root@sqm-docker03 ~]# docker exec t1 ip a

docker部署Macvlan實(shí)現(xiàn)跨主機(jī)網(wǎng)絡(luò)通信的實(shí)現(xiàn)

[root@sqm-docker03 ~]# docker run -it --name t2 --network container:t1 busybox
docker部署Macvlan實(shí)現(xiàn)跨主機(jī)網(wǎng)絡(luò)通信的實(shí)現(xiàn)

//接下來(lái)在t1容器中操作:[root@sqm-docker03 ~]# docker exec -it  t1 bin/sh

docker部署Macvlan實(shí)現(xiàn)跨主機(jī)網(wǎng)絡(luò)通信的實(shí)現(xiàn)
然后在t2容器中也可以看到此服務(wù):
docker部署Macvlan實(shí)現(xiàn)跨主機(jī)網(wǎng)絡(luò)通信的實(shí)現(xiàn)

看完上述內(nèi)容,你們對(duì)docker部署Macvlan實(shí)現(xiàn)跨主機(jī)網(wǎng)絡(luò)通信的實(shí)現(xiàn)有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。

文章標(biāo)題:docker部署Macvlan實(shí)現(xiàn)跨主機(jī)網(wǎng)絡(luò)通信的實(shí)現(xiàn)
當(dāng)前URL:http://chinadenli.net/article32/pipisc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、定制開(kāi)發(fā)動(dòng)態(tài)網(wǎng)站、網(wǎng)站建設(shè)企業(yè)建站、定制網(wǎng)站

廣告

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

成都網(wǎng)站建設(shè)公司