亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

docker部署Macvlan實現跨主機網絡通信的實現

發布時間:2021-06-03 17:17:15 來源:億速云 閱讀:529 作者:Leah 欄目:服務器

今天就跟大家聊聊有關docker部署Macvlan實現跨主機網絡通信的實現,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

基本概念:

Macvlan工作原理:

Macvlan是Linux內核支持的網絡接口。要求的Linux內部版本是v3.9–3.19和4.0+;通過為物理網卡創建Macvlan子接口,允許一塊物理網卡擁有多個獨立的MAC地址和IP地址。虛擬出來的子接口將直接暴露在相鄰物理網絡中。從外部看來,就像是把網線隔開多股,分別接受了不同的主機上一樣;物理網卡收到包后,會根據收到包的目的MAC地址判斷這個包需要交給其中虛擬網卡。

當容器需要直連入物理網絡時,可以使用Macvlan。Macvlan本身不創建網絡,本質上首先使宿主機物理網卡工作在‘混雜模式',這樣物理網卡的MAC地址將會失效,所有二層網絡中的流量物理網卡都能收到。接下來就是在這張物理網卡上創建虛擬網卡,并為虛擬網卡指定MAC地址,實現一卡多用,在物理網絡看來,每張虛擬網卡都是一個單獨的接口。

使用Macvlan需要注意以下幾點:
  • 容器直接連接物理網絡,由物理網絡負責分配IP地址,可能的結果是物理網絡IP地址被耗盡,另一個后果是網絡性能問題,物理網絡中接入的主機變多,廣播包占比快速升高而引起的網絡性能下降問題;

  • 宿主機上的某張網上需要工作在‘混亂模式'下;

  • 前面說到,工作在混亂模式下的物理網卡,其MAC地址會失效,所以,此模式中運行的容器并不能與外網進行通信,但是不會影響宿主機與外網通信;

  • 從長遠來看bridge網絡與overlay網絡是更好的選擇,原因就是虛擬網絡應該與物理網絡隔離而不是共享。

項目環境:

兩臺docker主機:(centos7)
docker01: 172.16.1.30
docker02: 172.16.1.31

項目操作:

實例一:macvlan跨主機單網絡解決方案:

docker01:

(1)開啟ens33網卡的混雜模式,開啟網卡的多個虛擬interface(接口)

[root@sqm-docker01 ~]# ip link set ens33 promisc on
##查看網卡的狀態:
[root@sqm-docker01 ~]# ip link show ens33

docker部署Macvlan實現跨主機網絡通信的實現

(2)創建macvlan網絡:

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

參數解釋:
-o: 綁定在哪張網卡之上(基于ens33網卡)

(3)基于剛創建的網絡運行一個容器:

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

docker部署Macvlan實現跨主機網絡通信的實現

docker02:(與docker01相同操作)

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

docker部署Macvlan實現跨主機網絡通信的實現

//創建macvlan網絡
[root@sqm-docker02 ~]# docker network create -d macvlan --subnet 172.16.100.0/24 --gateway 172.16.100.1 -o parent=ens33 mac_net1
//運行一個容器:
[root@sqm-docker02 ~]# docker run -itd --name box2 --network mac_net1 --ip 172.16.100.20 busybox

(4)測試兩個主機間的兩個容器相互通信:

docker部署Macvlan實現跨主機網絡通信的實現

注意事項:

能ping通的原因是兩個容器都是基于真實的ens33網卡的,所以宿主機上的ens33網卡必須能夠相互通信。這種方式只能夠ping通ip地址,是無法ping通容器名的。

實例二:macvlan跨主機多網絡解決方案:

(1)首先查看主機內核的8021q模塊:

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

docker部署Macvlan實現跨主機網絡通信的實現

##如果沒有查看到該模塊,需要執行以下命令進行加載:
[root@sqm-docker01 ~]# modprobe 8021q
開啟路由轉發:
[root@sqm-docker01 ~]# echo "net.ipv4.ip_forward = 1" > /etc/sysctl.conf 
[root@sqm-docker01 ~]# sysctl -p
net.ipv4.ip_forward = 1

(2)修改網絡配置信息:

docker01:

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

docker部署Macvlan實現跨主機網絡通信的實現

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

docker部署Macvlan實現跨主機網絡通信的實現

基于ens33網卡進行創建子網卡:

[root@sqm-docker01 network-scripts]# cp -p ifcfg-ens33 ifcfg-ens33.10 #網卡名稱自定義
[root@sqm-docker01 network-scripts]# cp -p ifcfg-ens33 ifcfg-ens33.20

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

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

docker部署Macvlan實現跨主機網絡通信的實現

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

docker部署Macvlan實現跨主機網絡通信的實現

(3)啟動子網卡:

[root@sqm-docker01 network-scripts]# ifup ifcfg-ens33.10 
[root@sqm-docker01 network-scripts]# ifup ifcfg-ens33.20
//查看網絡信息
[root@sqm-docker01 network-scripts]# ifconfig

docker部署Macvlan實現跨主機網絡通信的實現

(4)基于ens33.10和ens33.20創建macvlan網絡:

注意:網段不同,網絡名稱不同

[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)基于以上網絡分別運行2個容器:

[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操作相同,注意網段的相同,但主機ip得不同。

#以下操作將不做解釋:

開啟路由轉發:
[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實現跨主機網絡通信的實現

[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實現跨主機網絡通信的實現

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

docker部署Macvlan實現跨主機網絡通信的實現

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

[root@sqm-docker02 network-scripts]# ifup ifcfg-ens33.10 [root@sqm-docker02 network-scripts]# ifup ifcfg-ens33.20
//創建macvlan網絡:[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
//運行容器(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

//確保容器正常運行
docker部署Macvlan實現跨主機網絡通信的實現

(6)測試容器之間能夠跨主機通信:(注意:如果你是vmware環境的話,由于VMware虛擬機的原因,必須將兩臺主機默認的NAT模式修改為橋接模式才能夠正常通信)
test3與test1通信(相同網段):
docker部署Macvlan實現跨主機網絡通信的實現

test4與test2通信(相同網段):
docker部署Macvlan實現跨主機網絡通信的實現

排錯思路:如果部署完主機間無法通信的話,首先確認防火墻或iptables規則是否關閉或放行,是否禁用selinux,其次排查ens33的網卡配置文件及其子網卡內容是否修改錯誤,最后排查你創建macvlan網絡是是否網段定義錯誤,或者在運行容器是否ip地址指定不正確。

----------------------macvlan多網絡跨主機實現通信部署完畢---------------------

擴展知識點:
假設我們運行了一個t1容器,然后t2容器使用t1容器的網絡棧。

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

docker部署Macvlan實現跨主機網絡通信的實現

[root@sqm-docker03 ~]# docker run -it --name t2 --network container:t1 busybox
docker部署Macvlan實現跨主機網絡通信的實現

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

docker部署Macvlan實現跨主機網絡通信的實現
然后在t2容器中也可以看到此服務:
docker部署Macvlan實現跨主機網絡通信的實現

看完上述內容,你們對docker部署Macvlan實現跨主機網絡通信的實現有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

周至县| 永川市| 汉川市| 金塔县| 海淀区| 正定县| 东乌珠穆沁旗| 将乐县| 沙河市| 天气| 响水县| 景泰县| 嵩明县| 台南市| 合肥市| 巫山县| 乌什县| 肇州县| 宜城市| 新野县| 龙门县| 桑植县| 金阳县| 儋州市| 富顺县| 华亭县| 隆安县| 将乐县| 江阴市| 弥勒县| 河池市| 高州市| 陇南市| 沂水县| 彰化县| 来宾市| 敦化市| 凤山市| 福建省| 西安市| 文水县|