Docker容器的五種網絡模式工作原理及新建自定義網絡方法

PS:關於網絡的官方文檔:https://docs.docker.com/network/

一. 網絡模式

docker提供五種網絡模式

  • bridge
  • host
  • none
  • container
  • 自定義網絡

1. bridge

–net=bridge
默認網絡,Docker啓動後創建一個docker0網橋,默認創建的容器也是添加到這個網橋中。

在這裏插入圖片描述

2. host

–net=host
容器不會獲得一個獨立的network namespace,而是與宿主機共用一個。這就意味着容器不會有自己的網卡信息,而是使用宿主機的。容器除了網絡,其他都是隔離的。

$ docker image pull busybox											//拉取一個busybox測試
$ docker container run -it --name=test_bus --network=host busybox	//新建容器

在這裏插入圖片描述
在這裏插入圖片描述

3. none

–net=none
獲取獨立的network namespace,但不爲容器進行任何網絡配置,需要我們手動配置。

$ docker container run -it --network=none busybox

在這裏插入圖片描述

4. container

–net=container:Name/ID
與指定的容器使用同一個network namespace,具有同樣的網絡配置信息,兩個容器除了網絡,其他都還是隔離的。

$ docker container run -itd -p 8080:80 busybox			//創建一個box映射80端口
$ docker container run -itd  --name nginx_01 --network=container:3f623edc41e5 nginx			//創建一個nginx並把網絡指定到box的空間中
$ docker container inspect 3f623edc41e5		//查看box的網絡

最後能夠訪問box中的nginx
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

自定義網絡

與默認的bridge原理一樣,但自定義網絡具備內部DNS發現,可以通過容器名容器之間網絡通信。

$ docker network create net_test		//創建一個自定義網絡
$ docker network ls						//ls命令可以查看當前網絡
$ docker network inspect 090e7585eee3	//查看詳情等  跟 vol數據卷操作幾乎相同

創建好一個網絡後在創建兩個容器 test

$ docker container run -itd --network=net_test busybox		
$ docker container run -itd --network=net_test busybox		

在這裏插入圖片描述

二. 容器網絡訪問原理

一臺宿主機,網卡eth0 192段,宿主機內的容器默認172段,其它主機訪問容器是通過宿主機轉發完成,
下圖的veth類似一個管道,提供宿主機與容器的通信(宿主機一個容器一個),創建容器時就會自動創建veth虛擬設備

在這裏插入圖片描述

在這裏插入圖片描述
上圖的網關最終到了宿主機的一個模擬網卡上,然後通過ens33出去
在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述
所以veth有極大的作用
在這裏插入圖片描述

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