我在各种软件虚拟交换机中有数百个容器。我想知道是否可以找出哪个 vnet# 属于哪个 docker 容器。现在,我通过在每个容器创建时观察系统日志来检测到这一点。在 KVM 中,有一个命令“virsh domiflist”,这正是我正在寻找的。
NZD*_*NZD 19
的iflink容器的相同的ifindex的veth#。
您可以iflink按如下方式获取容器的 :
docker exec -it <container-name> bash -c 'cat /sys/class/net/eth0/iflink'
Run Code Online (Sandbox Code Playgroud)
说,这导致12,然后grep为此:
grep -l 12 /sys/class/net/veth*/ifindex
Run Code Online (Sandbox Code Playgroud)
这将在我的系统上给出一个独特的结果:
/sys/class/net/veth11d4238/ifindex
Run Code Online (Sandbox Code Playgroud)
将其组合到脚本中:
#!/bin/bash
for container in $(docker ps -q); do
iflink=`docker exec -it $container bash -c 'cat /sys/class/net/eth0/iflink'`
iflink=`echo $iflink|tr -d '\r'`
veth=`grep -l $iflink /sys/class/net/veth*/ifindex`
veth=`echo $veth|sed -e 's;^.*net/\(.*\)/ifindex$;\1;'`
echo $container:$veth
done
Run Code Online (Sandbox Code Playgroud)
该脚本的编写易于遵循。
示例运行:
$ docker ps -q
c4d8096eff43
34ac6e9f1e6e
d5a2aa5f3de3
$ sudo ./vethfinder
c4d8096eff43:veth11d4238
34ac6e9f1e6e:veth7d52cd1
d5a2aa5f3de3:vethe46073d
Run Code Online (Sandbox Code Playgroud)
参考:https : //forums.docker.com/t/relationship-between-interface-vethxxxxx-and-container/12872/20
| 归档时间: |
|
| 查看次数: |
8158 次 |
| 最近记录: |