使用主機網路進行網路連線

這一系列教程涉及獨立容器的網路連線,這些容器直接繫結到 Docker 主機的網路,沒有網路隔離。有關其他網路主題,請參閱概述

目標

本教程的目標是啟動一個 nginx 容器,該容器直接繫結到 Docker 主機上的 80 埠。從網路角度來看,這與 nginx 程序直接在 Docker 主機上而不是在容器中執行的隔離級別相同。但是,在所有其他方面,例如儲存、程序名稱空間和使用者名稱空間,nginx 程序與主機是隔離的。

先決條件

  • 此過程要求 Docker 主機上的 80 埠可用。要讓 Nginx 在不同的埠上偵聽,請參閱 nginx 映象的文件

  • host 網路驅動程式僅適用於 Linux 主機,並且是 Docker Desktop 4.34 及更高版本中的一個可選功能。要在 Docker Desktop 中啟用此功能,請導航到 設定 中的 資源 選項卡,然後在 網路 下選擇 啟用主機網路

步驟

  1. 以分離程序方式建立並啟動容器。--rm 選項表示容器退出/停止後就將其刪除。-d 標誌表示以後臺(分離)模式啟動容器。

    $ docker run --rm -d --network host --name my_nginx nginx
    
  2. 透過瀏覽 https://:80/ 訪問 Nginx。

  3. 使用以下命令檢查您的網路堆疊

    • 檢查所有網路介面,並驗證沒有建立新的介面。

      $ ip addr show
      
    • 使用 netstat 命令驗證哪個程序繫結到了 80 埠。您需要使用 sudo,因為該程序由 Docker 守護程序使用者擁有,否則您將無法看到其名稱或 PID。

      $ sudo netstat -tulpn | grep :80
      
  4. 停止容器。由於它是使用 --rm 選項啟動的,它將被自動刪除。

    docker container stop my_nginx
    

其他網路教程