如何獲取 Docker 容器的 IP 地址?


我們都知道,我們可以使用 Docker 在稱為容器的打包環境中執行我們的應用程式。當您希望容器相互通訊時,它們建立的網路可以被認為是橋接網路。執行以下命令以獲取網路列表。

sudo docker network ls

每個容器網路都有一個子網掩碼,可用於將其 IP 地址分配給其容器。這也意味著 Docker 網路中的每個容器都分配了一個 IP 地址。Docker 網路的預設子網是 172.17.0.0/16。

瞭解了這些,我們現在將瞭解可用於查詢網路中 Docker 容器的 IP 地址的不同方法。

  • 使用 Docker inspect

inspect 命令用於獲取主機上所有正在執行的 Docker 容器的底層資訊。它以 JSON 格式顯示。我們可以使用 format 選項與命令一起使用,以僅獲取少量重要資訊。

使用以下命令獲取使用 inspect 獲取容器 IP 地址。

sudo docker ps −a
sudo docker inspect −−format '{{ .NetworkSettings.IPAddress }}' <CONTAINER_ID>

第一個命令用於獲取所有正在執行的容器的容器 ID 列表。這可以在第二個命令中使用以查詢 IP 地址。

  • 對於單個容器

如果您只有一個容器正在執行,則可以透過解析它直接返回最後一個容器 ID

sudo docker inspect −−format '{{ .NetworkSettings.IPAddress }}' $(docker ps −q)
  • 使用 bash

您還可以透過將 bash shell 附加到容器來獲取容器的網路 ID。使用以下命令。

要啟動容器的 bash,請使用 -

sudo docker exec −it <CONTAINER_ID> bash

進入 bash 後,您可以使用以下命令訪問 IP 地址。

apt−get −y update
apt−get install iproute2
ip addr | grep global
  • 匯出容器的環境變數

對於特定的 Docker 容器,您可以匯出環境變數。以下命令返回最後一個正在執行的容器的 IP 地址。

sudo docker exec −it $(docker ps −l −q) env | grep ADDR
  • 使用 IP 地址命令

您還可以透過執行 IP 地址命令來訪問容器的 IP 地址。檢視以下命令。

sudo docker exec −it <container−id> ip addr | grep global
  • 使用 bashrc 檔案

您可以透過建立自己的自定義命令來訪問特定容器的 IP 地址。您只需要在您的 bashrc 檔案中新增一個方法,該方法將獲取一個引數(該引數將是容器 ID),然後返回該容器的 IP 地址。檢視以下命令。

containerip() {
   sudo docker inspect −−format '{{ .NetworkSettings.IPAddress }}' "$@"
}

將以上程式碼貼上到您 ∽/.bashrc 檔案的末尾。

使用以下命令重新載入檔案 -

source ∽/.bashrc

現在,使用以下命令獲取容器 ID。

sudo docker ps −a

複製容器 ID,並在以下命令中使用它以獲取容器的 IP 地址。

sudo containerip <CONTAINER_ID>

在本文中,我們介紹了六種獲取 Docker 容器 IP 地址的不同方法。但是,最好且最簡單的方法是使用 inspect 命令,這使其成為最廣泛使用的方法之一。

更新於: 2020 年 10 月 27 日

4K+ 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告