如何獲取 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 命令,這使其成為最廣泛使用的方法之一。