日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Docker的网络类型及驱动器

發布時間:2023/12/20 编程问答 61 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Docker的网络类型及驱动器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

計算機如果不能夠聯網,其價值就要大打折扣。類似的,一個Docker容器也需要通過網絡訪問其他資源,或者被其他資源訪問。這就涉及到Docker容器實例的網絡,也與Docker宿主機的網絡息息相關。

總的來說,Docker的網絡是一個通過多種網絡驅動器(driver)實現的Docker子系統。根據網絡驅動器的不同,Docker提供了不同特性的網絡,Docker容器實例也因加入不同的網絡而具有不同的網絡訪問特性。

目前(Docker v18.03),Docker Engine內置支持如下幾種類型的網絡。

  • host類型的網絡
  • bridge類型的網絡
  • overlay類型的網絡
  • macvlan類型的網絡
  • none類型的網絡

Docker Engine啟動時,即默認創建如下三個網絡。

[root@myhost ~]# docker network ls NETWORK ID NAME DRIVER SCOPE bc096d60cb79 bridge bridge local ba805516b064 host host local 5a9904b67539 none null local
  • bridge網絡,該網絡的名字為bridge,bridge類型的網絡
  • host網絡,該網絡的名字為host,host類型的網絡
  • none網絡,該網絡的名字為none,none類型的網絡

1. host網絡

host網絡就是Docker宿主機的網絡,是Docker Engine啟動即默認創建的網絡之一。host網絡的網絡驅動器為host,即創建網絡時,使用-d=host表示創建的是host類型的網絡。

注意,Docker Engine啟動時默認創建的3個網絡中有一個host類型的網絡,其名稱也是host。后續創建容器實例時,使用--net=host表示創建的容器實例加入到默認的host網絡中。

加入到該網絡中的所有容器實例,容器實例與容器宿主機之間沒有網絡隔離,所以容器實例都直接使用宿主機的網絡,擁有與宿主機一樣的IP,使用的是宿主機的端口。即所有容器實例的使用網卡都是宿主機的網卡,所有容器實例的IP都是宿主機的IP。一個宿主機上的所有容器實例,默認都是相通的,彼此之間通過localhost即可互相訪問。不同的容器實例使用的網絡端口(其實就是宿主機的端口)必須不同,否則會因沖突而無法啟動容器實例。

2. bridge網絡

Docker Engine啟動即默認創建的網絡之一。bridge網絡的網絡驅動器為bridge,即-d=bridge。

該網絡支持在同一個宿主機上的各個容器實例之間的通信。bridge網絡是一個獨立的網絡空間,在網絡空間內部的各個容器實例能夠直接通信。各個容器實例都是連接到一個網橋,即docker0。docker0通過iptables維護了一個NAT路由表,能夠連接bridge網絡與宿主機的網卡。外部請求到達宿主機的網卡后,根據“宿主機IP:宿主機端口”與“容器實例IP:容器實例端口”之間的映射關系,進行NAT轉發,從而實現外部請求與容器實例之間的通信。當然,這要求在啟動容器實例的時候即通過--publish建立端口映射關系。

新創建的容器實例默認就會加入bridge網絡,即容器實例默認連接到docker0。創建容器實例可以通過使用--network指定加入到其他已有的網絡。

也可以另外創建一個定制的bridge網絡,創建的bridge網絡會覆蓋默認的bridge網絡。默認的bridge網絡不支持服務的DNS自動發現,即一個容器實例要通過容器實例的name找到容器實例的IP,就無法使用該網絡。定制的bridge網絡,最大的好處是默認即支持服務的自動發現。

docker0作為bridge網絡的網關,默認IP為172.17.0.1,默認子網172.17.0.0/16。在bridge網絡中,新創建的容器實例會按照順序獲取網絡IP,如172.17.0.2,172.17.0.3,...。所以重啟容器實例后,容器的IP可能就變化了。

3. none網絡

none網絡是Docker Engine啟動即默認創建的網絡之一。none網絡的網絡驅動器為none,即-d=none。

none網絡是一個完全隔離的自治網絡,甚至與Docker宿主機的網絡都不通,必須手工配置網卡后才能夠使用。

加入到該網絡的容器實例,往往要在后續設置中加入到其他的第三方網絡。

4. overlay類型的網絡

overlay類型的網絡的網絡驅動器為overlay,即-d=overlay。

該類型的網絡適用于Docker宿主機集群中的各個獨立的容器實例之間通信。為集群中的Docker容器實例提供跨多個Docker Engine的網絡連接。

5. macvlan類型的網絡

macvlan類型的網絡的網絡驅動器為macvlan,即-d=macvlan。

該類型的網絡適用于容器實例需要與宿主機的MAC地址直接通信,無需端口映射,也無需NAT,容器實例的eth0直接與宿主機的物理網卡通信。容器實例可以被賦予公共IP,并從宿主機外部直接訪問。

在某些歷史遺留應用中,只能通過MAC通信,與之通信的容器實例也必須擁有MAC地址。這時容器實例就如同真實的物理設備一樣。

6. 其他remote網絡

相對于Docker Engine內置支持的幾種網絡,其他通過第三方驅動器創建的網絡都被統稱為remote類型的網絡。

第三方網絡驅動器都是以網絡插件的方式提供。截至目前,通過官方認證的網絡插件如下:

  • Weaveworks提供的Weave Net
  • Cisco Systems提供的Contiv Network Plugin
  • Infoblox提供的Infoblox IPAM Plugin

下面以Weave Net為例簡單說明。

  • 安裝Weave Net插件

?? ??? ??? ?docker plugin install store/weaveworks/net-plugin:2.5.0 --grant-all-permissions

  • 查看插件

? ? ? ? ? ? docker plugin ls

  • 創建網絡myweavenet

?? ??? ??? ?docker network create --driver=store/weaveworks/net-plugin:2.5.0 myweavenet

?

參考鏈接:

https://success.docker.com/article/networking

https://docs.docker.com/network/

https://docs.docker.com/v17.09/engine/userguide/networking/

https://store.docker.com/search?category=network&q=&type=plugin

總結

以上是生活随笔為你收集整理的Docker的网络类型及驱动器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。