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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Docker的网络类型及驱动器

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

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

總的來說,Docker的網(wǎng)絡(luò)是一個通過多種網(wǎng)絡(luò)驅(qū)動器(driver)實現(xiàn)的Docker子系統(tǒng)。根據(jù)網(wǎng)絡(luò)驅(qū)動器的不同,Docker提供了不同特性的網(wǎng)絡(luò),Docker容器實例也因加入不同的網(wǎng)絡(luò)而具有不同的網(wǎng)絡(luò)訪問特性。

目前(Docker v18.03),Docker Engine內(nèi)置支持如下幾種類型的網(wǎng)絡(luò)。

  • host類型的網(wǎng)絡(luò)
  • bridge類型的網(wǎng)絡(luò)
  • overlay類型的網(wǎng)絡(luò)
  • macvlan類型的網(wǎng)絡(luò)
  • none類型的網(wǎng)絡(luò)

Docker Engine啟動時,即默認創(chuàng)建如下三個網(wǎng)絡(luò)。

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

1. host網(wǎng)絡(luò)

host網(wǎng)絡(luò)就是Docker宿主機的網(wǎng)絡(luò),是Docker Engine啟動即默認創(chuàng)建的網(wǎng)絡(luò)之一。host網(wǎng)絡(luò)的網(wǎng)絡(luò)驅(qū)動器為host,即創(chuàng)建網(wǎng)絡(luò)時,使用-d=host表示創(chuàng)建的是host類型的網(wǎng)絡(luò)。

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

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

2. bridge網(wǎng)絡(luò)

Docker Engine啟動即默認創(chuàng)建的網(wǎng)絡(luò)之一。bridge網(wǎng)絡(luò)的網(wǎng)絡(luò)驅(qū)動器為bridge,即-d=bridge

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

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

也可以另外創(chuàng)建一個定制的bridge網(wǎng)絡(luò),創(chuàng)建的bridge網(wǎng)絡(luò)會覆蓋默認的bridge網(wǎng)絡(luò)。默認的bridge網(wǎng)絡(luò)不支持服務(wù)的DNS自動發(fā)現(xiàn),即一個容器實例要通過容器實例的name找到容器實例的IP,就無法使用該網(wǎng)絡(luò)。定制的bridge網(wǎng)絡(luò),最大的好處是默認即支持服務(wù)的自動發(fā)現(xiàn)。

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

3. none網(wǎng)絡(luò)

none網(wǎng)絡(luò)是Docker Engine啟動即默認創(chuàng)建的網(wǎng)絡(luò)之一。none網(wǎng)絡(luò)的網(wǎng)絡(luò)驅(qū)動器為none,即-d=none

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

加入到該網(wǎng)絡(luò)的容器實例,往往要在后續(xù)設(shè)置中加入到其他的第三方網(wǎng)絡(luò)。

4. overlay類型的網(wǎng)絡(luò)

overlay類型的網(wǎng)絡(luò)的網(wǎng)絡(luò)驅(qū)動器為overlay,即-d=overlay

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

5. macvlan類型的網(wǎng)絡(luò)

macvlan類型的網(wǎng)絡(luò)的網(wǎng)絡(luò)驅(qū)動器為macvlan,即-d=macvlan

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

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

6. 其他remote網(wǎng)絡(luò)

相對于Docker Engine內(nèi)置支持的幾種網(wǎng)絡(luò),其他通過第三方驅(qū)動器創(chuàng)建的網(wǎng)絡(luò)都被統(tǒng)稱為remote類型的網(wǎng)絡(luò)。

第三方網(wǎng)絡(luò)驅(qū)動器都是以網(wǎng)絡(luò)插件的方式提供。截至目前,通過官方認證的網(wǎng)絡(luò)插件如下:

  • 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

  • 創(chuàng)建網(wǎng)絡(luò)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

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。