Docker 網路 - host 模式
阿新 • • 發佈:2020-06-25
容器與主機、容器與容器之間是互相隔離的。同時,我們可以通過配置 docker 網路,為容器建立完全獨立的網路名稱空間,或者使容器共享主機或者其他容器的網路名稱空間,以應對不同場景的需要。
這裡有4 種常用的單宿主機網路模式:
- bridge 模式;
- host 模式;
- container 模式;
- none 模式。
本節將介紹網路模式中的 host 模式。
1. host 模式
host 模式下啟動的容器,網路不再與宿主機隔離,訪問容器服務可以直接使用訪問宿主機對應的網路埠,且不需要埠轉發。
網路拓撲圖如下:
以 host 模式啟動 nginx 的容器 h0:
docker run -d -t --network host --name h0 nginx
啟動成功後,在瀏覽器輸入任意的本機地址,都可以開啟 nginx 的預設頁面,訪問宿主機 80 埠就是訪問容器的 80 埠,它們是一致的。
以 host 模式啟動 nginx 的容器 h1:
docker run -d -t --network host --name h1 nginx
使用 docker ps -a
命令檢視所有容器,發現 h1 容器沒有執行:
使用 docker logs h1
檢視容器 h1 的日誌,發現,由於宿主機 80 埠已經被 h0 容器的服務佔用,使得 h1 無法獲取到 此埠,導致無法正常啟動。
我們在學習過程中,不再使用的容器記得刪除掉,釋放資源和空間
docker rm -f h0 h1
2. 小結
host 模式下的容器與宿主機共享同一個網路環境,容器可以使用宿主機的網絡卡和外界的通訊,不需要轉發拆包,效能好。但 host 模式也有非常嚴重的缺點:容器沒有隔離的網路,會與其他服務競爭宿主機的網路,導致宿主機網路狀態不可控,因此無法用在生產環境。