使用主機網路進行網路連接
目錄
本系列教學探討如何設定直接繫結至 Docker 主機網路且無網路隔離的獨立容器。若需其他網路連線主題,請參閱概覽。
目標
本教學的目標是啟動一個直接繫結至 Docker 主機連接埠 80 的 nginx 容器。從網路角度來看,這與 nginx 行程直接在 Docker 主機上執行而非在容器中執行的隔離等級相同。然而在其他所有方面,例如儲存空間、行程命名空間 (process namespace) 和使用者命名空間,該 nginx 行程仍與主機隔離。
先決條件
此程序要求 Docker 主機上的連接埠 80 必須可用。若要讓 Nginx 監聽不同的連接埠,請參閱
nginx映像檔的文件host網路驅動程式僅適用於 Linux 主機,而在 Docker Desktop 4.34 及更新版本中則作為可選功能。若要在 Docker Desktop 中啟用此功能,請導覽至設定 (Settings) 中的資源 (Resources) 分頁,然後在網路 (Network) 下方勾選啟用主機網路 (Enable host networking)。
程序
以分離模式 (detached mode) 建立並啟動容器。
--rm選項代表容器一旦退出或停止就會自動移除。-d旗標代表以分離模式(在背景)啟動容器。$ docker run --rm -d --network host --name my_nginx nginx瀏覽至 https://:80/ 以存取 Nginx。
使用下列指令檢查您的網路堆疊
檢查所有網路介面並驗證沒有建立新的介面。
$ ip addr show使用
netstat指令驗證哪個行程繫結至連接埠 80。您需要使用sudo,因為該行程是由 Docker daemon 使用者所擁有,否則您將無法查看到其名稱或 PID。$ sudo netstat -tulpn | grep :80
停止容器。由於啟動時使用了
--rm選項,它將會被自動移除。docker container stop my_nginx