一篇說明白 Docker 四種網(wǎng)絡(luò)模式
今天給大家聊聊docker四種網(wǎng)絡(luò)模式,進一步加深對docker技術(shù)的理解,歡迎大家一起來學習!
1、docker網(wǎng)絡(luò)模式分類
docker run創(chuàng)建Docker容器時,可以用--net選項指定容器的網(wǎng)絡(luò)模式,Docker主要有以下4種網(wǎng)絡(luò)模式。
- bridge模式:--net=bridge 如果不指定的話默認設(shè)置。
- host模式:--net=host
- container模式:--net=container:NAME_or_ID
- none模式:--net=none
2、bridge 網(wǎng)橋模式
Docker安裝啟動后會在宿主主機上創(chuàng)建一個名為 docker0 的虛擬網(wǎng)橋,處于七層網(wǎng)絡(luò)模型的數(shù)據(jù)鏈路層,后續(xù)每當我們創(chuàng)建一個新的docker容器,在不指定容器網(wǎng)絡(luò)模式的情況下,docker會通過 docker0 與主機的網(wǎng)絡(luò)連接,docker0 相當于網(wǎng)橋。
使用 bridge 模式新創(chuàng)建的容器,容器內(nèi)部都會有一個虛擬網(wǎng)卡,名為 eth0,容器之間可以通過容器內(nèi)部的IP相互通信。
命令:
docker run -d -name tomcat01 --net=bridge -p 8085:80 tomcat:latest
說明:
- --net=bridge 可省略 ,-p 指定端口映射。
- 網(wǎng)橋默認 IP 范圍是一般都是 172.17.x.x 。
3、host 模式
如果指定的host模式容器不會擁有一個獨立network namesace,而是與宿主主機共用network namesace。也就說明容器本身不會有的網(wǎng)卡信息,而是使用宿主主機的網(wǎng)絡(luò)信息。容器除了網(wǎng)絡(luò),其他比如文件系統(tǒng)、進程等依然都是隔離的。
說明:
- --net=host 指定。
- 容器和宿主主機共享 Network namespace。
- host模式因為和宿主主機共享network namespace,會有可能出現(xiàn)端口沖突的情況。
4、container模式
container模式和host模式很類似,host模式和宿主主機共享network namespace;container模式和指定的容器共享,兩者之間除了網(wǎng)絡(luò)共享(網(wǎng)卡、主機名、IP 地址),其他方面還是隔離的。
命令:
docker run -d -name tomcat02 --net=container:name/id -p 8000:80 tomcat:latest
說明:
–-net={容器id 或容器name} 指定。
當前容器和另外一個容器共享 Network namespace。
5、none模式
如果dockers容器指定的網(wǎng)絡(luò)模式為none,該容器沒有辦法聯(lián)網(wǎng),外界也無法訪問它,可以用來本次測試。
命令:
docker run -d -name tomcat02 --net=none -p 8000:80 tomcat:latest
-net=none 指定。
容器有獨立的Network namespace,但并沒有對其進行任何網(wǎng)絡(luò)設(shè)置,如果需要的話,需要自定義配置網(wǎng)絡(luò)。