亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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