1. 程式人生 > >Docker的網路型別及驅動器

Docker的網路型別及驅動器

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

總的來說,Docker的網路是一個通過網路驅動器(driver)實現的Docker子系統。不同的網路驅動器,能夠建立具有不同網路特性的Docker容器例項。

目前(Docker v18.03),Docker內建提供如下的網路驅動器:

1. bridge

Docker容器例項預設即使用該網路驅動器,-d=bridge明確使用該網路驅動器。

該網路驅動器適用於獨立的容器例項之間通訊,但是這些容器例項必須位於同一個宿主機

。在bridge網路中,各個獨立的容器例項都是連線到一個bridge,並通過bridge通訊。

在Docker環境中,預設即已經建立了一個名為bridge的網路。後續啟動的容器例項,如果沒有指明網路驅動器,則預設加入到該網路。也可以專門建立一個定製的bridge網路,建立的bridge網路會覆蓋預設的bridge網路。定製的bridge網路,最大的好處是預設即支援服務的自動發現。

在bridge網路中,每次啟動一個容器例項,都會按照順序獲取網路IP。所以重啟容器例項後,可能會發現容器的IP變化了。

bridge網路預設不支援IPv6。

2. host

-d=host明確使用該網路驅動器。

該網路驅動器適用於Linux宿主機上的獨立的容器例項。容器例項與容器宿主機之間沒有網路隔離,容器例項直接使用宿主機的網路。
host網路預設不支援IPv6。

3. overlay

-d=overlay明確使用該網路驅動器。

該網路驅動器適用於Docker宿主機叢集中的各個獨立的容器例項之間通訊。為叢集中的Docker容器例項提供跨多個Docker引擎的網路連線。

4. macvlan

-d=macvlan明確使用該網路驅動器。
該網路驅動器適用於與需要有MAC地址的容器例項。
在某些歷史遺留應用中,只能通過MAC通訊,與之通訊的容器例項也必須擁有MAC地址。這時容器例項就如同真實的物理裝置一樣。

5. none

-d=none禁用容器例項中的網路功能。通常,這表明要使用其他的第三方網路驅動器。

關於其他第三方網路驅動器,請參考https://store.docker.com/search?category=network&q=&type=plugin

參考連結:

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