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

本系列教學課程將探討獨立容器的網路連線,這些容器直接繫結到 Docker 主機的網路,沒有網路隔離。如需其他網路主題,請參閱概觀

目標

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

先決條件

  • 此程序要求埠 80 在 Docker 主機上可用。要讓 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. 瀏覽至 http://localhost:80/ 來存取 Nginx。

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

    • 檢查所有網路介面,並確認未建立新的介面。

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

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

    docker container stop my_nginx
    

其他網路教學課程