如何获取 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 命令,这也使它成为最广泛使用的命令之一。

