使用主機網路進行網路連線
目錄
本系列教程介紹了直接繫結到 Docker 主機網路的獨立容器的網路連線,沒有網路隔離。有關其他網路主題,請參閱概述。
目標
本教程的目標是啟動一個nginx
容器,該容器直接繫結到 Docker 主機上的埠 80。從網路連線的角度來看,這與nginx
程序直接在 Docker 主機上執行(而不是在容器中)具有相同的隔離級別。但是,在所有其他方面,例如儲存、程序名稱空間和使用者名稱空間,nginx
程序與主機隔離。
先決條件
此過程需要 Docker 主機上埠 80 可用。要使 Nginx 監聽其他埠,請參閱
nginx
映象文件。host
網路驅動程式僅在 Linux 主機上有效,但作為測試版功能在 Docker Desktop 版本 4.29 及更高版本(適用於 Mac、Windows 和 Linux)中可用。要啟用此功能,請導航到設定中的正在開發的功能選項卡,然後選擇啟用主機網路。
步驟
建立並啟動容器作為分離程序。
--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