如何將 Docker 容器繫結到特定的外部介面?


簡介

有時您可能希望將 Docker 容器繫結到主機上的特定外部介面。例如,您可能希望將 Docker 容器中執行的 Web 伺服器繫結到特定的網路介面,以便可以從特定的 IP 地址或主機名訪問它。

有幾種方法可以將 Docker 容器繫結到特定的外部介面。在本文中,我們將探討三種方法:--network 標誌、--publish 標誌和--add-host 標誌。

將 Docker 容器繫結到特定外部介面的先決條件

在開始將 Docker 容器繫結到特定外部介面之前,您需要確保您的機器上已安裝 Docker。您可以按照 Docker 網站上的說明在您的機器上安裝 Docker。

您還必須確保主機上提供了所需的外部介面。例如,如果您想將 Docker 容器繫結到特定的 IP 地址,則必須確保在主機上配置了該 IP 地址。

使用 --network 標誌將 Docker 容器繫結到特定外部介面

--network 標誌允許您指定 Docker 容器應連線到的網路。您可以使用此標誌將容器繫結到主機上的特定外部介面。

要使用--network 標誌,您需要指定網路名稱和容器名稱。例如 -

$ docker run --network=my-network --name=my-container my-image 

此命令將啟動一個基於my-image 映象的 Docker 容器,並將其連線到my-network 網路。容器將被命名為my-container

您可以使用docker network create 命令建立網路 -

$ docker network create --driver=bridge --subnet=172.25.0.0/16 my-network 

此命令將使用橋接驅動程式建立一個名為my-network 的新網路,子網為172.25.0.0/16。然後,您可以使用此網路將 Docker 容器繫結到子網內的特定 IP 地址。

使用 --publish 標誌將 Docker 容器繫結到特定外部介面

--publish 標誌允許您指定 Docker 容器上的哪些埠應公開到主機。您可以使用此標誌將容器繫結到主機上的特定外部介面。

要使用--publish 標誌,您需要指定容器上的埠和主機上的埠。例如 -

$ docker run --publish=8080:80 --name=my-container my-image 

此命令將啟動一個基於my-image 映象的 Docker 容器,並將容器的埠 80 公開到主機的埠 8080。容器將被命名為my-container

您還可以使用--publish-all 標誌指定埠範圍 -

$ docker run --publish-all=true --name=my-container my-image 

此命令將啟動一個基於my-image 映象的 Docker 容器,並將容器的所有埠公開到主機。容器將被命名為my-container

使用 --add-host 標誌將 Docker 容器繫結到特定外部介面

--add-host 標誌允許您向容器的/etc/hosts 檔案新增條目。您可以使用此標誌將容器繫結到主機上的特定外部介面。

要使用--add-host 標誌,您需要指定主機名和 IP 地址。例如 -

$ docker run --add-host=my-host:172.17.0.1 --name=my-container my-image 

此命令將啟動一個基於my-image 映象的 Docker 容器,並向/etc/hosts 檔案新增一個條目,將主機名my-host 對映到 IP 地址172.17.0.1。容器將被命名為my-container

您還可以透過多次使用--add-host 標誌來指定多個主機名到 IP 的對映 -

$ docker run --add-host=my-host:172.17.0.1 --add-host=my-other-host:172.17.0.2 --name=my-container my-image 

將 Docker 容器繫結到特定外部介面的高階主題

除了上面描述的方法之外,還有其他一些方法可以將 Docker 容器繫結到特定的外部介面。

一種方法是使用 Docker Compose 自動化將 Docker 容器繫結到特定外部介面的過程。Docker Compose 是一個用於定義和執行多容器 Docker 應用程式的工具。您可以使用 Docker Compose 在docker-compose.yml 檔案中定義您的網路和釋出設定,然後使用docker-compose up 命令啟動您的容器。

另一種方法是使用反向代理或負載均衡器將多個 Docker 容器繫結到同一個外部介面。反向代理位於您的容器前面,並根據主機名或其他請求詳細資訊將傳入流量路由到相應的容器。負載均衡器將傳入流量分佈到多個容器,以提高效能和可用性。

結論

在本文中,我們探討了將 Docker 容器繫結到特定外部介面的三種方法:--network 標誌、--publish 標誌和--add-host 標誌。我們還簡要介紹了一些高階主題,例如使用 Docker Compose 和反向代理或負載均衡器。

使用這些選項,您可以輕鬆地將 Docker 容器繫結到特定的外部介面,從而更輕鬆地從不同的網路或裝置訪問您的應用程式。

更新於: 2023年1月16日

7K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告