Docker是一種容器化平臺,可以有效地打包應(yīng)用程序和它們的依賴項。Docker通過四種不同的網(wǎng)絡(luò)結(jié)構(gòu)來提供網(wǎng)絡(luò)連接。這四種網(wǎng)絡(luò)結(jié)構(gòu)包含:host網(wǎng)絡(luò)結(jié)構(gòu)、bridge網(wǎng)絡(luò)結(jié)構(gòu)、none網(wǎng)絡(luò)結(jié)構(gòu)以及Overlay網(wǎng)絡(luò)結(jié)構(gòu)。
Host網(wǎng)絡(luò)結(jié)構(gòu)
docker run --net=host
Host網(wǎng)絡(luò)結(jié)構(gòu)是將Docker容器連接到主機網(wǎng)絡(luò)的網(wǎng)絡(luò)結(jié)構(gòu)。此網(wǎng)絡(luò)結(jié)構(gòu)繞過了網(wǎng)絡(luò)隔離,因此容器共享主機的IP地址和端口,可以直接通過主機IP地址訪問容器。這種網(wǎng)絡(luò)結(jié)構(gòu)對于信息安全來說不是很好,因為容器的網(wǎng)絡(luò)連接與主機的網(wǎng)絡(luò)連接是混在一起的。
Bridge網(wǎng)絡(luò)結(jié)構(gòu)
docker run --net=bridge
Bridge網(wǎng)絡(luò)結(jié)構(gòu)是一種默認(rèn)情況下,在Docker中使用的網(wǎng)絡(luò)結(jié)構(gòu)。該網(wǎng)絡(luò)結(jié)構(gòu)將容器連接到一個單獨的網(wǎng)絡(luò)橋接口。通過分配唯一的IP地址,容器可以使用該橋接口與其他容器進行通信。Bridge網(wǎng)絡(luò)結(jié)構(gòu)還允許容器訪問主機上沒有公開的網(wǎng)絡(luò)端口。
None網(wǎng)絡(luò)結(jié)構(gòu)
docker run --net=none
None網(wǎng)絡(luò)結(jié)構(gòu)是將容器從所有網(wǎng)絡(luò)中隔離出來的網(wǎng)絡(luò)結(jié)構(gòu)。該網(wǎng)絡(luò)結(jié)構(gòu)為容器提供了完全的隔離和安全性,容器無法訪問其他容器或主機的網(wǎng)絡(luò)。這種網(wǎng)絡(luò)結(jié)構(gòu)通常用于將容器與敏感信息隔離開來。
Overlay網(wǎng)絡(luò)結(jié)構(gòu)
docker network create --driver overlay
Overlay網(wǎng)絡(luò)結(jié)構(gòu)是基于Docker Swarm的容器編排工具實現(xiàn)的網(wǎng)絡(luò)結(jié)構(gòu),可以將多個Docker主機上的容器連接到一個虛擬網(wǎng)絡(luò)中。這種網(wǎng)絡(luò)結(jié)構(gòu)非常適合于跨多個數(shù)據(jù)中心或云平臺運行的分布式應(yīng)用程序。使用Overlay網(wǎng)絡(luò)結(jié)構(gòu),容器可以替代虛擬機進行動態(tài)伸縮,以滿足應(yīng)用程序的需求。