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

dockeroperating systemopen source更新于 2026/2/10 7:37:17

我们都知道,可以使用 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 命令,这也使它成为最广泛使用的命令之一。


相关文章