DOCKER中的通訊

docker中如何進行互通

在這裏插入圖片描述

單容器通訊

NONE

none優點是可以生成隨機碼,缺點是無法通訊。

docker run -it --network none 鏡像ID或者名稱
HOST

host優點是性能比較好,缺點是會有端口衝突的問題,可以使用於對性能有要求的容器。

docker run -it --network host  鏡像ID或者名稱
bridge

我們創建容器的時候會發現我們有一個docker0的虛擬橋接網卡,可以根據這個橋接卡進行通訊。

查看當前主機下的虛擬橋接網卡

brctl show

新建一個my_net的橋接卡

docker network create --driver bridge my_net 

查看橋接卡的信息

docker network ls

查看my_net這塊網卡的詳細信息

docker network inspect my_net 

創建並開啓一個名爲test的容器並連接上my_net這塊網卡

docker run -itd --name test --network my_net busybox

創建可自定義ip的橋接卡

創建一個叫my_net2並可以自定義ip網關的橋接卡。

docker network create --driver bridge --subnet 172.22.16.0/24 --gateway 172.22.16.1 my_net2

創建並啓動容器

docker run -itd --network my_net2 --name test3 busybox

驗證是否可以通訊

直接創建可自定義IP的容器

創建並啓動容器 並將ip自定義設置

docker run -itd --network my_net2 --ip 172.22.16.8 鏡像ID或名稱

一個容器可以同時連接兩塊橋接卡

給容器test1新增加一塊網卡

docker network connect 虛擬網卡名稱 容器ID或名稱

多容器通訊

開啓網絡混雜模式 需要通訊的主機都需要進行配置

ip link set  網卡名稱 promisc on 

查看網卡信息

ip link show 

創建一個網卡 需要通訊的主機都需要進行配置

docker network create -d macvlan --subnet 172.16.86.0/24  --gateway 172.16.86.1 -o parent=eno16777736 mac_net1

開啓一個容器 需要通訊的主機都需要進行配置

docker run -itd --name bbox2 --ip 172.16.86.11 --network mac_net1 busybox 

查看模塊信息

modinfo 8021q 

安裝模塊

modprobe 8021q 

查看安裝與否

modprobe --first-time 8021q

修改網卡配置文件

vim ifcfg-eno16777736

修改BOOTPROTO=manual
複製網卡配置文件

cp -p ifcfg-eno16777736 ifcfg-eno16777736.10 
cp -p ifcfg-eno16777736 ifcfg-eno16777736.20

修改配置文件

vim ifcfg-eno16777736.10

修改配置文件

BOOTPROTO=none
NAME=eno16777736.10
DEVICE=eno16777736.10
IPADDR=192.168.10.1
PREFIX=24
NETWORK=192.168.10.0
ONBOOT=yes
VLAN=yes

修改配置文件

vim ifcfg-eno16777736.20

修改配置文件

BOOTPROTO=none
NAME=eno16777736.20
DEVICE=eno16777736.20
IPADDR=192.168.10.1
PREFIX=24
NETWORK=192.168.10.0
ONBOOT=yes
VLAN=yes

開啓子接口網卡

ifup eno16777736.10 
ifup eno16777736.20

創建網卡

docker network create -d macvlan --subnet 192.168.10.0/24  --gateway 192.168.10.1 -o parent=eno16777736.10 mac_net10 
docker network create -d macvlan --subnet 192.168.20.0/24 --gateway 192.168.20.1 -o parent=eno16777736.20 mac_net20

創建子接口網卡容器

docker run -itd --name box10 --ip 192.168.10.10 --network mac_net10 busybox 
docker run -itd --name box20 --ip 192.168.20.10 --network mac_net20 busybox 

需要通訊的主機都需要進行配置 記得更換IP

開啓轉發功能

iptables -t nat -A POSTROUTING -o  eno16777736.10 -j MASQUERADE
iptables -t nat -A POSTROUTING -o  eno16777736.20 -j MASQUERADE
iptables -A FORWARD -i eno16777736.20 -o eno16777736.10 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eno16777736.10 -o eno16777736.20 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eno16777736.10 -o eno16777736.20 -j ACCEPT
iptables -A FORWARD -i eno16777736.20 -o eno16777736.10 -j ACCEPT

查看幾臺主機是否互通。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章