在使用Docker搭建應(yīng)用的時(shí)候,往往需要考慮到網(wǎng)絡(luò)模式的選擇。Docker提供了四種網(wǎng)絡(luò)模式:
- bridge - host - none - container
bridge:
bridge是Docker默認(rèn)的網(wǎng)絡(luò)模式,當(dāng)沒有指定網(wǎng)絡(luò)模式時(shí)就會(huì)使用bridge。在此模式下,Docker會(huì)在內(nèi)部創(chuàng)建一個(gè)虛擬的bridge網(wǎng)絡(luò),同時(shí)分配一個(gè)子網(wǎng)地址段。Docker容器會(huì)自動(dòng)加入這個(gè)bridge網(wǎng)絡(luò)中,從而實(shí)現(xiàn)了相互通信。此模式下的容器可以通過它們的名稱或ID在容器之間進(jìn)行通信。
host:
在host模式下,Docker容器共享宿主機(jī)的網(wǎng)絡(luò)棧,也就是說容器不會(huì)創(chuàng)建自己的網(wǎng)絡(luò)接口,而是直接使用宿主機(jī)上的接口。這種模式可以提供更高的網(wǎng)絡(luò)性能,但同時(shí)也失去了隔離性,容器的端口被直接映射到宿主機(jī)上,也可能會(huì)出現(xiàn)端口沖突的問題。
none:
在none模式下,Docker容器沒有網(wǎng)絡(luò)接口,也沒有任何網(wǎng)絡(luò)配置。容器可以通過host或bridge網(wǎng)絡(luò)加入到網(wǎng)絡(luò)中。
container:
在container模式下,容器將共享另一個(gè)容器的網(wǎng)絡(luò)棧。這種模式可以創(chuàng)建多個(gè)容器共享同一個(gè)網(wǎng)絡(luò),可以實(shí)現(xiàn)高度隔離性的應(yīng)用。
需要注意的是,網(wǎng)絡(luò)模式是在啟動(dòng)容器時(shí)指定的,一旦容器被啟動(dòng),網(wǎng)絡(luò)模式就無法更改。