📌  相关文章
📜  获取正在运行的 docker 容器的 ip - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:27:50.982000             🧑  作者: Mango

获取正在运行的 docker 容器的 IP

在使用 Docker 搭建应用时,经常需要获取正在运行的容器的 IP 地址。本文将介绍如何使用 Shell/Bash 脚本获取正在运行的 docker 容器的 IP。

方案

我们可以通过执行 docker inspect 命令,获取容器的 IP 地址信息。该命令的输出结果以 JSON 格式展示,需要借助于 grepawk 命令来解析并提取出 IP 地址信息。

下面的 Bash 脚本会显示当前正在运行的所有容器的 IP 地址信息:

#!/bin/bash

# 获取所有正在运行的容器 ID
CONTAINER_IDS=$(docker ps -q)

# 逐个输出容器的 IP 地址
for id in $CONTAINER_IDS
do
  IP=$(docker inspect --format="{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}" $id)
  echo "Container ID: $id"
  echo "IP Address  : $IP"
done
代码解析
  1. docker ps -q 命令会输出所有正在运行的容器的 ID。
  2. docker inspect 命令会返回指定容器的配置信息,其中我们只关心容器的 IP 地址信息。
  3. --format 选项可以指定输出格式,这里我们使用了 Go 的模板语法来输出容器的 IP 地址。
  4. {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}} 这个模板语法表示遍历容器配置信息中关于网络的配置,并获取容器的 IP 地址。
  5. 使用 awk 命令来过滤输出结果,只保留 IP 地址信息。
结束语

通过以上方法,我们就可以方便地获取正在运行的 docker 容器的 IP 地址信息。如果需要获取指定容器的 IP 地址,可以将上述脚本中的 CONTAINER_IDS 变量设置为指定容器的 ID。