docker網絡介紹之bridge網絡詳解



docker network網絡》

一.docker容器網絡的介紹

測試鏡像:busybox

 

(1)----單機網絡,容器間的通訊

1>none 什么都沒有的網絡,

docker run -it --network=none busybox

高隔離性網絡,比如是生成隨機驗證碼,可以不通過網絡,進入容器進行查看。

 

2>host:和當前的網絡結構完全相同和物理機的網絡協議棧一樣,傳輸性高,靈活性差,可能產生端口沖突。

docker run -it --network=host busybox

 

3>brige:

brctl show/delbr

brige網絡就是通過就是通過一對veth pair連接,一對連接http的容器的eth0上,一端連接到docker0上,進行通訊。

 

(2)----跨主機的容器間通訊

macvlan

overlay

 

 

二.birdge網絡的詳解

bridge網絡:

1.bridge網絡需要的命令

(1)創建一個bridge網絡,名稱為my_net

docker network create --driver bridge my_net

(2)查看docker網絡,是否創建成功。

docker network ls

 (3)查看自定義網絡的生成的網卡和序列編號

brctl show   

ifconfig

注意:生成網卡和序列編號,和docker0一樣,橋接網絡的。

(4)查看docker的bridge網絡的詳細情況

docker network inspect my_net

 

2.bridge網絡的命令和實驗

 

1》手動指定bridge的網段和網關

docker network create --driver bridge --subnet 網段/24 --gateway 網關 my_net2

 

2》運行一個容器驗證通過my_net2網絡自動分發的IP是否與剛才創建的是在一個網段

docker run -itd --network my_net2 busybox

docker exec -it id /bin/sh

ip a

 

3》為容器手動分發IP地址,查看是否又效果

docker run -itd --network my_net2 --ip 172.22.16.8 busybox

docker exec -it id /bin/sh

ip a

 

4》驗證同一網段的兩個容器是否可以通訊,

 

 

5》運行一個httpd的容器

docker run -itd httpd

docker exec -it id /bin/sh

驗證:發現無法與不同網段的容器進行通訊,所以做以下操作:

 

*******開啟ipv4路由功能

vim /etc/sysctl.conf

net.ipv4.ip_forward = 1

 

*******清除防火牆規則

iptables -F

最后就可以通訊了

 

由於每次開關容器都需要清防火牆,所以做以下操作:

 

6》給httpd的容器創建一個網卡(eth1)連接busybox的bridge網卡my_net2,這樣就可以不同網卡通訊了,容器通訊,必須是同一塊網卡,隔離網絡需要增加一塊網卡才能通訊

docker network connect my_net2 httpdid

docker exec -it  httpdid /bin/sh

最終實驗效果就是可以相互通訊。

 

 

配圖解析:dockerbridge網絡

 

http

eth1   15: veth571f547@if14 (eth1網卡15是http的,然后橋接到my_net2的14網卡上)

eht0    9: veth63772c8@if8  docker0

 

my_net2

           172.23.16.2

eth0  13: veth0025cbc@if12  my_net2 

           172.23.16.8

eth0  11: veth9e8ad66@if10  my_net2

 

 

實驗步驟:

容器間的通訊

 

docker network create --driver bridge my_net

docker network create --driver bridge --subnet 172.23.16.0/24 --gateway 172.23.16.1 my_net2

docker network ls

docker run -itd --network my_net2 busybox

docker ps

docker exec -it a4eacdd83fd2  /bin/sh

docker run -itd --network my_net2 --ip 172.23.16.8 busybox

docker ps

docker exec -it 2cd6594750f2 /bin/sh

docker run -itd httpd

docker ps

docker exec -it aac95c715368 /bin/sh

docker ps

systemctl restart docker

docker ps

docker start aac95c715368 2cd6594750f2 a4eacdd83fd2

docker ps

docker exec -it aac95c715368 /bin/sh

iptables -F

docker exec -it aac95c715368 /bin/sh

docker network connect my_net2 aac95c715368

docker exec -it aac95c715368 /bin/sh


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM