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

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

目標

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

先決條件

  • 此過程需要 Docker 主機上埠 80 可用。要使 Nginx 監聽其他埠,請參閱nginx映象文件

  • host 網路驅動程式僅在 Linux 主機上有效,但作為測試版功能在 Docker Desktop 版本 4.29 及更高版本(適用於 Mac、Windows 和 Linux)中可用。要啟用此功能,請導航到設定中的正在開發的功能選項卡,然後選擇啟用主機網路

步驟

  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
    

其他網路教程