使用主機網路進行網路連線
目錄
本系列教學課程將探討獨立容器的網路連線,這些容器直接繫結到 Docker 主機的網路,沒有網路隔離。如需其他網路主題,請參閱概觀。
目標
本教學課程的目標是啟動一個直接繫結到 Docker 主機上埠 80 的 nginx
容器。從網路的角度來看,這與 nginx
程序直接在 Docker 主機上執行而不是在容器中執行的隔離級別相同。然而,在所有其他方面,例如儲存空間、程序命名空間和使用者命名空間,nginx
程序與主機隔離。
先決條件
此程序要求埠 80 在 Docker 主機上可用。要讓 Nginx 監聽不同的埠,請參閱
nginx
映像檔的說明文件。host
網路驅動程式僅適用於 Linux 主機,但在 Docker Desktop 4.29 版及更新版本中,可作為 Mac、Windows 和 Linux 的測試版功能使用。要啟用此功能,請在「設定」中瀏覽至「資源」索引標籤,然後在「網路」下方選取「啟用主機網路」。
步驟
以分離程序建立並啟動容器。
--rm
選項表示容器一旦退出/停止即予移除。-d
旗標表示以分離模式 (在背景中) 啟動容器。$ docker run --rm -d --network host --name my_nginx nginx
瀏覽至 http://localhost:80/ 來存取 Nginx。
使用下列命令檢查您的網路堆疊
檢查所有網路介面,並確認未建立新的介面。
$ ip addr show
使用
netstat
命令驗證哪個程序繫結到埠 80。您需要使用sudo
,因為該程序歸 Docker daemon 使用者所有,否則您將無法看到其名稱或 PID。$ sudo netstat -tulpn | grep :80
停止容器。由於它是使用
--rm
選項啟動的,因此它會自動移除。docker container stop my_nginx