容器網絡通信手動配置

實驗1:宿主機內部容器間的網絡通信

1、新建網絡爲none的容器

docker run -it --rm --name=network-node --net=none nginx:alpine sh

2、創建虛擬網卡對

ip link add A type veth peer name B

3、將虛擬網卡對A端插入docker0網橋並啓動網卡

brctl addif docker0 A
ip link set A up
#brctl  可用yum install bridge-utils 安裝

4、將虛擬網卡對B端插入容器網絡名稱空間(藉助於ip netns)

PID=$(docker inspect -f '{{.State.Pid}}' network-none) #查找容器pid
mkdir -p /var/run/netns
ln -s /proc/$PID/ns/net /var/run/netns/ #鏈接容器網絡名稱空間至netns
ip netns exec $PID ip link set dev B name eth0 #修改設備名稱
ip netns exec $PID ip link set eth0 up
ip netns exec $PID ip addr add 172.17.0.99/16 dev eth0
ip netns texec $PID ip route add default via 172.17.0.1
#配置完成後可測試同一網橋上的容器網絡是否互通
#查看容器虛擬網卡對綁定信息:cat /sys/class/net/eth0/ifindex

實驗2:跨宿主機之間的容器網絡通信(兩臺主機點對點通信)

1、新建vxlan設備並配置ip地址

#主機1
ip link add vxlan20 type vxlan id 20 remote 192.168.1.188 dstport 6789 dev wlp3s0
ip link set vxlan20 up
ip addr add 10.0.136.11/24 dev vxlan20
#主機2
ip link add vxlan20 type vxlan id 20 remote 192.168.1.113 dstport 6789 dev enp3s0
ip link set vxlan20 up
ip addr add 10.0.136.12/24 dev vxlan20
# 驗證設備信息
ip -d link show vxlan20
bridge fdb show |grep vxlan20

2、新建測試網橋並將容器綁定

#主機1
docker network create --subnet 172.20.0.0/16 network-test
docker run -it --rm --net network-test --ip 172.20.0.2  nginx:alpine sh
#主機2
docker network create --subnet 172.20.0.0/16 network-test
docker run -it --rm --net network-test --ip 172.20.0.3  nginx:alpine sh

3、將網橋與vxlan設備綁定並測試跨主機間的容器網絡通信

#主機1
brctl addif br-4ea755c4336f  vxlan20 #br-4ea755c4336f 爲容器所綁定的網橋名稱:brctl show 查看
#主機2
brctl addif br-aa8b06a1012f vxlan20

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