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