使用主機網路進行網路連線
目錄
這一系列教程涉及獨立容器的網路連線,這些容器直接繫結到 Docker 主機的網路,沒有網路隔離。有關其他網路主題,請參閱概述。
目標
本教程的目標是啟動一個 nginx
容器,該容器直接繫結到 Docker 主機上的 80 埠。從網路角度來看,這與 nginx
程序直接在 Docker 主機上而不是在容器中執行的隔離級別相同。但是,在所有其他方面,例如儲存、程序名稱空間和使用者名稱空間,nginx
程序與主機是隔離的。
先決條件
此過程要求 Docker 主機上的 80 埠可用。要讓 Nginx 在不同的埠上偵聽,請參閱
nginx
映象的文件。host
網路驅動程式僅適用於 Linux 主機,並且是 Docker Desktop 4.34 及更高版本中的一個可選功能。要在 Docker Desktop 中啟用此功能,請導航到 設定 中的 資源 選項卡,然後在 網路 下選擇 啟用主機網路。
步驟
以分離程序方式建立並啟動容器。
--rm
選項表示容器退出/停止後就將其刪除。-d
標誌表示以後臺(分離)模式啟動容器。$ docker run --rm -d --network host --name my_nginx nginx
透過瀏覽 https://:80/ 訪問 Nginx。
使用以下命令檢查您的網路堆疊
檢查所有網路介面,並驗證沒有建立新的介面。
$ ip addr show
使用
netstat
命令驗證哪個程序繫結到了 80 埠。您需要使用sudo
,因為該程序由 Docker 守護程序使用者擁有,否則您將無法看到其名稱或 PID。$ sudo netstat -tulpn | grep :80
停止容器。由於它是使用
--rm
選項啟動的,它將被自動刪除。docker container stop my_nginx