你有没有试过查找某个 Docker 容器的本地网络 IP 地址?并试图从另一个容器连接到它?今天给大家分享一个 Docker 命令,可以一键获取 Docker 容器的本地 IP 地址。

你可以输入这个命令:

docker inspect --format='{{ $n := .Name }}{{range .NetworkSettings.Networks}}{{ print .IPAddress "\\t" $n "\\n"}}{{end}}' $(sudo docker ps -q)

输出如下:

这条命令由两部分组成:docker ps -qdocker inspect,我们分别进行解释。

第一部分:docker ps -q

sudo docker ps -q
  • docker ps: 列出当前正在运行的 Docker 容器。
  • q: 只显示容器的 ID。

这一部分命令会返回所有正在运行的容器的 ID 列表。

第二部分:docker inspect --format=...

docker inspect --format='{{ $n := .Name }}{{range .NetworkSettings.Networks}}{{ print .IPAddress "\\t" $n "\\n"}}{{end}}' ...
  • docker inspect: 查看一个或多个容器的详细信息。
  • -format='...': 使用 Go 模板语法格式化输出。

在这个格式字符串中:

  1. {{ $n := .Name }}: 定义一个名为 $n 的变量,并将容器的名称赋值给它。
  2. {{range .NetworkSettings.Networks}}...{{end}}: 遍历容器的网络设置中的所有网络。
  3. {{ print .IPAddress "\\t" $n "\\n"}}: 输出当前网络的 IP 地址和容器名称,以制表符(\\t)分隔,并在末尾换行。

结合在一起,格式化字符串的作用是:

  • 对每个容器,遍历其所有网络。
  • 输出每个网络的 IP 地址和容器名称。

完整命令

docker inspect --format='{{ $n := .Name }}{{range .NetworkSettings.Networks}}{{ print .IPAddress "\\t" $n "\\n"}}{{end}}' $(sudo docker ps -q)

该命令的作用是:

  1. 通过 sudo docker ps -q 获取所有正在运行的容器 ID。
  2. 对每个容器 ID,使用 docker inspect 获取详细信息。
  3. 使用 Go 模板语法格式化输出,显示每个容器的网络 IP 地址及其名称。

最终输出的格式类似于:

172.17.0.2  /container_name1
172.17.0.3  /container_name2
...

这条命令有助于快速获取所有正在运行的 Docker 容器的 IP 地址及其名称,方便在容器之间进行网络连接。

订阅评论
提醒
guest

0 评论
最旧
最新 最多投票
内联反馈
查看所有评论
You May Also Like