4858789-4f3f6c700333fe26.jpg
前言
今天開始我們學習docker網絡:
docker安裝時便會為我們創建三種網絡模式:host、none、bridge。
查看docker網絡
[root@cgls ~] # docker network ls
host網絡
容器創建時通過 --network=host 指定使用宿主機網絡,此時容器與宿主機共享網絡棧,容器內的網絡配置和宿主機完全一樣。
none網絡
容器創建時通過 --network=host 指定容器不創建任何網卡,此時容器里只有lo。
bridge網絡
容器創建時不指定--network,那么容器默認使用bridge網絡。bridge網絡是由docker創建的linux bridge -- docker0提供。
查看網橋
[root@cgls~]# brctl show
image
查看網橋網關
[root@cgls~]# ifconfig | grep docker0
image
由于docker0 網橋是安裝docker時就默認創建的,我們無法在創建容器的時候指定容器ip,只能由docker0自動分配ip。
如果想要創建容器的時候指定ip,需要自己再建一個bridge網絡。
三種網絡使用場景:
上面已經介紹了三種docker自帶的網絡,我們一同設想一下這三種網絡適用的場景。
host網絡:
選用host網絡的容器,其網絡棧和宿主機一摸一樣,它的優勢在于網絡性能強于其他網絡模式。如果對網絡傳輸有很大需求可以選用host網絡。
none網絡:
none沒有網卡的網絡,能做到更加封閉,可以更好的保護重要數據,所以最適合對安全性要求高并且不需要聯網的容器。
bridge網絡:
bridge網絡是通過容器上虛擬網絡設備和網橋上虛擬網絡設備組成一組veth(相當于虛擬的網線)進行連接的,然后通過docker0從172.17.0.0/16分配ip給容器使用。顯而易見bridge網絡適用于日常需要連接網絡的容器,例如http容器、web容器...