Host netowrk 模式不會與 host 網路隔離(與 host 共享 Net Namespace),該 container 不會分配自己的 IP 位址。例如啟動一個轉發到 port 80 的 container 應用程式,則在 host 上也同時可以直接以本地使用該內容。
Host network 中 container 直接使用 host 的網路,可以想成 container 執行在 host 的某個 process,它監聽什麼 port ,那麼主機網路的 port 就會被使用。需要注意的是,同時間一個 port 只有一個 process 或 container object 能監聽。
Host network 對於優化性能及在 container 需要處理大量 port 轉發的時候很有用,因為不需要網路地址轉換(NAT), 並且每個 port 都不會建立 userland-proxy(用戶端代理),連結將直接進入 container 內。
由於 container 的網路設定和實體主機使用相同的網路設定,所以 container 裡面也就可以修改實體機器的網路設定,因此使用此模式需要考慮網路安全性上的問題。
-p
、--publish
、-P
、--publish-all
將會被自動忽略並發出警告。docker run --net="host" ubuntu:18.04