如何获取 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+ 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告