?
? ????? PHP ??? ???? ??? ?? ??
Docker Engine群集模式的覆蓋網(wǎng)絡(luò)可以安全地開(kāi)箱即用。群組節(jié)點(diǎn)使用八卦協(xié)議交換覆蓋網(wǎng)絡(luò)信息。默認(rèn)情況下,節(jié)點(diǎn)使用GCM模式下的AES算法對(duì)通過(guò)八卦交換的信息進(jìn)行加密和認(rèn)證。群中的管理器節(jié)點(diǎn)每12小時(shí)旋轉(zhuǎn)一次用于加密八卦數(shù)據(jù)的密鑰。
您還可以加密覆蓋網(wǎng)絡(luò)上不同節(jié)點(diǎn)上的容器之間交換的數(shù)據(jù)。要啟用加密,創(chuàng)建覆蓋網(wǎng)絡(luò)時(shí)要通過(guò)--opt encrypted
標(biāo)志:
$ docker network create --opt encrypted --driver overlay my-multi-host-network dt0zvqn0saezzinc8a5g4worx
當(dāng)您啟用覆蓋加密時(shí),Docker會(huì)在所有節(jié)點(diǎn)之間創(chuàng)建IPSEC隧道,在這些節(jié)點(diǎn)上調(diào)度連接到覆蓋網(wǎng)絡(luò)的服務(wù)的任務(wù)。這些通道在GCM模式下也使用AES算法,管理器節(jié)點(diǎn)每12小時(shí)自動(dòng)旋轉(zhuǎn)一次密鑰。
不要將Windows節(jié)點(diǎn)附加到加密的覆蓋網(wǎng)絡(luò)。 Windows上不支持覆蓋網(wǎng)絡(luò)加密。如果Windows節(jié)點(diǎn)嘗試連接到加密的覆蓋網(wǎng)絡(luò),則不會(huì)檢測(cè)到錯(cuò)誤,但該節(jié)點(diǎn)將無(wú)法通信。
因?yàn)橛糜谌杭J降母采w網(wǎng)絡(luò)使用來(lái)自管理器節(jié)點(diǎn)的加密密鑰來(lái)加密八卦通信,所以只有群集中作為任務(wù)運(yùn)行的容器才能訪(fǎng)問(wèn)密鑰。因此,使用docker run
(非托管容器)在群集模式外啟動(dòng)的容器無(wú)法附加到覆蓋網(wǎng)絡(luò)。
例如:
$ docker run --network my-multi-host-network nginx docker: Error response from daemon: swarm-scoped network(my-multi-host-network) is not compatible with `docker create` or `docker run`. This network can only be used by a docker service.
要解決這種情況,請(qǐng)將非托管容器遷移到托管服務(wù)。例如:
$ docker service create --network my-multi-host-network my-image
由于swarm模式是可選功能,因此Docker引擎可以保持向后兼容性。如果您愿意,您可以繼續(xù)依賴(lài)第三方鍵值存儲(chǔ)來(lái)支持覆蓋網(wǎng)絡(luò)。然而,強(qiáng)烈鼓勵(lì)切換到群模式。除了本文中介紹的安全優(yōu)勢(shì)外,swarm模式還可以充分利用新服務(wù)API提供的更高的可伸縮性。