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

本系列教學探討如何設定直接繫結至 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)

程序

  1. 以分離模式 (detached mode) 建立並啟動容器。--rm 選項代表容器一旦退出或停止就會自動移除。-d 旗標代表以分離模式(在背景)啟動容器。

    $ docker run --rm -d --network host --name my_nginx nginx
    
  2. 瀏覽至 https://:80/ 以存取 Nginx。

  3. 使用下列指令檢查您的網路堆疊

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

      $ ip addr show
      
    • 使用 netstat 指令驗證哪個行程繫結至連接埠 80。您需要使用 sudo,因為該行程是由 Docker daemon 使用者所擁有,否則您將無法查看到其名稱或 PID。

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

    docker container stop my_nginx
    

其他網路設定教學課程

© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.