Docker veth 对查看

本文介绍了一种在Docker环境下查找容器与主机间Veth对的方法,通过编写脚本来自动化这一过程,帮助理解Docker网络原理。文章详细解释了如何使用ipnetns和sysfs文件系统定位容器的网络接口,并将其与主机上的Veth接口关联。
  • 在讲解 Docker 网络原理的时候会使用 ip netns 来演示,使用 Docker 创建容器后,使用 ip netns list 查看不到信息。
  • 找到网卡对应的方式,在主机上执行如下命令
docker exec -it <container-name> bash -c 'cat /sys/class/net/eth0/iflink'
# 假设返回 12
grep -l 12 /sys/class/net/veth*/ifindex
# 此时会有如下类似返回
/sys/class/net/veth11d4238/ifindex
# veth11d4238 即主机上的另一半
  • 做成一个脚本 vethfinder
#!/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
  • 执行
$ docker ps -q
c4d8096eff43
34ac6e9f1e6e
d5a2aa5f3de3

$ sudo ./vethfinder
c4d8096eff43:veth11d4238
34ac6e9f1e6e:veth7d52cd1
d5a2aa5f3de3:vethe46073d

转载于:https://my.oschina.net/seal90/blog/3067775

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值