docker network inspect xxx查看docker网络关联容器

目的

在docker环境下,docker network ls下,如何查看网络和容器的关联关系?

env

  • docker
  • network-bridge-mode

步骤

1.使用 docker network inspect 就能看到关联容器

docker 的网络模型本身就带着一点“量子纠缠”的味道:一个网络只要有容器加入,元数据里都会留下痕迹。inspect 输出里就藏着你要的关联信息。

1.1.核心字段:Containers

在 docker network inspect 的 JSON 结果中,有一个关键节点:

1
2
3
4
5
6
7
8
9
"Containers": {
"0cfd3a9f31df2d34cc7e...": {
"Name": "my-nginx",
"EndpointID": "xxxxxx",
"MacAddress": "02:42:ac:12:00:02",
"IPv4Address": "172.18.0.2/16",
"IPv6Address": ""
}
}

这个 Containers 字段列出的所有容器 ID,就是当前网络的成员。Docker 会记录每个容器在此网络中的 endpoint。

你可以直接过滤:

1
docker network inspect 9397a5596dbf -f '{{json .Containers}}'

如果要更直观地列出容器名:

1
docker network inspect 9397a5596dbf -f '{{range $k,$v := .Containers}}{{$v.Name}} {{end}}'

2.基于容器 ID 再查询更多信息(可选)

假设 inspect 输出里看到一个容器 ID:

1
docker inspect <container_id> --format '{{.Name}}'

或者一次性列出全部容器名和ID:

1
2
docker network inspect 9397a5596dbf \
-f '{{range $k,$v := .Containers}}{{$k}} {{$v.Name}}{{println}}{{end}}'

3.可视化流转结构

下面用一个通用结构图展示“网络”和“容器”之间的关联方式:

graph LR
    NET[Docker Network: 9397a5596dbf]
    C1[Container A]
    C2[Container B]
    C3[Container C]

    NET --> C1
    NET --> C2
    NET --> C3

网络只是一张“交换机级别的虚拟世界底图”,而容器是接上去的节点。inspect 能让你窥见整个小宇宙结构。