docker容器如何與外部網絡進行通信?
Docker容器是一個開源的應用容器引擎,讓開發者可以以統一的方式打包他們的應用以及依賴包到一個可移植的容器中,然后發布到任何安裝Docker引擎的服務器上,也可以實現虛擬化。
隨著云計算的飛速發展以及企業需求的多樣化,Docker容器技術成為云計算人才必備的技能之一。很多人想要快速掌握Docker容器技術,接下來的杭州云計算學習進階就給大家講解Docker容器的四種網絡模式。
1、closed container 封閉式網絡模式
沒有網絡協議棧的通信使用none模式,Docker容器擁有自己的Network Namespace,但是,并不為Docker容器進行任何網絡配置。也就是說,這個Docker容器沒有網卡、IP、路由等信息,只有lo網絡接口。需要我們自己為Docker容器添加網卡、配置IP等。
2、bridged container 橋接式網絡模式
各個容器之間網絡協議棧單獨分離當Docker啟動時,會自動在主機上創建一個docker0虛擬網橋,實際上是Linux的一個bridge,可以理解為一個軟件交換機,它會在掛載到它的網口之間進行轉發。同時,Docker隨機分配一個本地未占用的私有網段(在 RFC1918 中定義)中的一個地址給docker0接口。當創建一個Docker容器的時候,同時會創建了一對veth pair 接口。這對接口一端在容器內,即eth0;另一端在本地并被掛載到docker0網橋,名稱以veth開頭。通過這種方式,主機可以跟容器通信,容器之間也可以相互通信。Docker就創建了在主機和所有容器之間一個虛擬共享網絡。
3、joined container 聯合掛載式網絡模式
容器之間可以共享網絡協議棧,即可以通過套接字來進行通信這個模式指定新創建的容器和已經存在的一個容器共享一個Network Namespace,而不是和宿主機共享。新創建的容器不會創建自己的網卡,配置自己的IP,而是和一個指定的容器共享 IP、端口范圍等。同樣,兩個容器除了網絡方面,其他的如文件系統、進程列表等還是隔離的。兩個容器的進程可以通過lo網卡設備通信。
4、opentainer container 開放式網絡模式
與主機共享網絡協議棧Host模式使用是在容器啟動時候指明--network host,此時容器共享宿主機的Network Namespace,容器內啟動的端口直接是宿主機的端口,容器不會創建網卡和IP,直接使用宿主機的網卡和IP,但是容器內的其他資源是隔離的,如文件系統、用戶和用戶組。直接使用宿主機網絡。同樣啟動一個nginx,此時共享主機網絡,根據情況來使用,這樣子也不用做端口轉發,網絡傳輸效率會比較高。