1.1 網路驅動程式 Bridge
Docker 的網路驅動程式可以讓容器彼此互動,也可以連接到外部網路。Docker 提供了幾個網路驅動程式,每個都有自己的特點,並適用於特定的使用場景。在這堂課裡,我們會探討四個主要的網路驅動程式:bridge、host、none 和 overlay。
網路驅動程式 bridge 是 Docker 的預設網路驅動程式。它建立了一個私有的內部網路,容器可以在這個網路裡通信。這個網路與主機的外部網路是隔離的。
特點:
- 連接到
bridge
網路的容器可以透過 IP 地址互相通信。 - 外部網路無法直接與
bridge
網路中的容器通信,除非設定了埠轉發。 - 在本地開發和測試場景中使用非常簡單。
使用範例:
如果在建立容器時沒有指定網路,容器會自動連接到 bridge
網路。
Terminal
docker run -d --name my_container nginx
要設定埠轉發,可以使用 -p
標誌。
Terminal
docker run -d -p 8080:80 --name my_container nginx
1.2 網絡驅動程式 Host
網絡驅動程式 host
讓容器可以直接使用主機機器的網絡堆疊。這意味著,容器將擁有與主機相同的 IP 地址,並且能夠使用主機的所有網絡介面。
特點:
- 使用網絡驅動程式
host
的容器,由於減少了網絡虛擬化的開銷,性能更快。 - 容器可以訪問與主機相同的網絡介面,可能會增加安全風險。
- 適用於需要高網絡性能或特定網絡配置的場景。
使用示例:
Terminal
docker run -d --network host --name my_container nginx
1.3 網路驅動 None
網路驅動 none
會關閉容器的所有網路功能。連接到 none 網路的容器沒有網路介面,這使得它完全與其他容器和網路隔離開來。
特點:
- 容器完全與所有網路隔離。
- 對於不需要網路的容器非常有用,比如執行與網路無關的任務。
使用範例:
Terminal
docker run -d --network none --name my_container busybox
1.4 網路驅動程式 Overlay
網路驅動程式 overlay
用於建立分佈式網絡,覆蓋多個 Docker 主機。這個驅動程式經常應用於 Docker Swarm 或 Kubernetes,以確保不同主機上的容器之間的網路互通。
特點:
- 提供不同主機上的容器之間的連接。
- 需要設置集群,例如 Docker Swarm。
- 允許在現有網絡之上創建虛擬網絡,提供高水準的隔離和安全性。
使用範例:
要使用 overlay
驅動程式,首先需要創建 Docker Swarm 集群。
1. 初始化 Docker Swarm:
Terminal
docker swarm init
2. 創建 overlay 網絡:
Terminal
docker network create -d overlay my_overlay_network
3. 啟動連接至 overlay
網絡的容器:
Terminal
docker service create --name my_service --network my_overlay_network nginx
1.5 比較網路驅動程式
比較不同的網路驅動程式
網路驅動程式 | 隔離性 | 效能 | 適用性 | 特點 |
---|---|---|---|---|
bridge | 高 | 中等 | 本地網路 | 預設的隔離網路 |
host | 低 | 高 | 效能 | 與主機共用網路堆疊 |
none | 完全 | 最高 | 隔離 | 完全隔離網路 |
overlay | 高 | 高 | 分散式網路 | 在不同主機的容器間通信 |
網路驅動程式的應用
-
Bridge
: 當容器需要相互通信但應與外部網路隔離時,使用於本地應用程式和測試。 -
Host
: 適用於需要高網路效能或特殊網路配置的應用程式,且網路隔離性不是重點時使用。 -
None
: 使用於完全隔離的容器,無需網路交互時。 -
Overlay
: 使用於分散式應用程式執行於叢集內時,需要在不同主機的容器間進行通信時使用。
GO TO FULL VERSION