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

dockeroperating systemopen source更新于 2026/2/14 6:07:17

如果您使用 Docker 已经很长时间了,您的主机上可能已经运行了大量容器。有时,跟踪所有这些容器会变得非常困难。此外,如果您在网络上或使用 Compose,则网络中可能有多个容器在运行。在这种情况下,确定哪些容器正在运行以及哪些容器已发生故障非常困难。您可能需要定期 ping 这些容器以检查它们的状态。为此,您需要获取容器的 IP 地址。

如果您知道容器的名称或 ID,就可以轻松获取任何容器的 IP 地址。您可以使用"Docker ps -a"命令获取容器名称。这将列出所有现有容器。有几种方法可以从主机获取容器的 IP 地址。在本文中,我们将讨论一些简单且常用的方法。

方法 1. 使用 Inspect 命令和 Format 选项

第一种方法是使用 Docker inspect 命令检查容器,并使用 format 选项仅打印容器的 IP 地址。让我们来看看如何操作。

$ docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <container-ID>

此命令使用 -f 标志(代表 --format),并使用 Go 模板仅打印容器的 IP 地址。您需要在末尾指定容器名称或 ID。

方法 2. 使用 GREP 管道和 Inspect 命令

除了使用 format 选项外,您还可以使用上述 Docker inspect 命令的另一种变体。您可以简单地将 Docker inspect 命令的输出与 grep 命令(模式匹配,模式为"IPAddress")一起通过管道传输。让我们看看如何操作。

$ docker inspect myubuntu | grep "IPAddress"

此命令将成功打印容器的 IP 地址。

方法 3. 获取所有容器的 IP 地址

如果您想打印所有容器的 IP 地址及其容器名称,可以使用相同的 Docker inspect 命令并附加 format 选项。但是,除了容器名称之外,您还可以包含一个子命令,该子命令返回所有现有容器的容器 ID。

$ docker inspect -f '{{.Name}}-{{.NetworkSettings.IPAddress }}' $(docker ps -aq)

子命令 <​​strong>docker ps -aq 列出所有容器的容器 ID。这将作为参数传递给父 Docker inspect 命令。

方法 4. 在 Docker Compose 中列出所有容器的 IP 地址

如果您使用的是 Docker Compose,则可以使用以下命令列出 Compose 网络中所有现有容器的 IP 地址。

docker inspect -f '{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)

方法 5. 使用 Bash 脚本列出 IP 地址

您还可以使用 Bash 脚本创建一个函数来列出所有容器的 IP 地址。只需在您的 ~/.bashrc 文件中添加以下代码片段即可。

docker-ip() {
   docker inspect --format '{{ .NetworkSettings.IPAddress }}' "$@"
}

现在,如果您想获取 IP 地址,可以在终端中使用以下命令。

$ docker-ip <container-name>

方法 6. 以表格形式列出 IP

如果您想以表格形式列出 IP 地址,请使用下面提到的命令。

$ docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}} %tab% {{.Name}}' $(docker ps -aq
) | sed 's#%tab%#\t#g' | sed 's#/##g' | sort -t . -k 1,1n -k 2,2n -k 3,3n -k 4,4n

总而言之,本文讨论了如何使用 6 种不同的方法获取主机或 Compose 网络中单个或所有容器的 IP 地址。您可以根据需要使用其中任何一种。


相关文章