1. 程式人生 > Docker入門教學 >Docker 網路 - host 模式

Docker 網路 - host 模式

容器與主機、容器與容器之間是互相隔離的。同時,我們可以通過配置 docker 網路,為容器建立完全獨立的網路名稱空間,或者使容器共享主機或者其他容器的網路名稱空間,以應對不同場景的需要。

這裡有4 種常用的單宿主機網路模式:

  1. bridge 模式;
  2. host 模式;
  3. container 模式;
  4. none 模式。

本節將介紹網路模式中的 host 模式。

1. host 模式

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 模式也有非常嚴重的缺點:容器沒有隔離的網路,會與其他服務競爭宿主機的網路,導致宿主機網路狀態不可控,因此無法用在生產環境