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