Docker SDK获取networking接口以及ifindex
即使这个问题已经在几个不同的地方得到解答,但是还没有完整的答案。
其中一个问题是,
找出哪个networking接口属于docker集装箱
在Docker论坛上有一个关于这个的讨论 ,我也在下面添加了一些引用。
我正在尝试将dockernetworking接口映射到主机中的接口。
当docker容器启动时,它会创buildveth对,并将一个对等体放在主机的桥上,另一端放在docker容器中,如下所示。
这些接口之间的关系只是来自这些接口的ifindex。
如果我能得到主机vethxxx
接口的vethxxx
,并将其与ifindex
中的接口的ifindex
比较,我可以build立相关性。
为了做到这一点,我必须访问find容器内的networking接口的ifindex,
为了做到这一点,我必须执行下面的事情,
docker exec -it my-container cat /sys/class/net/eth1/iflink
为了做到这一点,必须保证一个容器中有一个shell可用。
有没有办法使用docker客户端(Go Lang Docker客户端)并列出容器内的networking接口,并获得这些接口的相应ifindexes。 与这些ifindexes
,然后我可以得到主机的接口。
如果这样的事情是不可能的,我可以读取正在运行的docker集装箱内的文件,或者复制到主机,使用给定的API客户端泊坞
下面更多的相关链接,
- docker0和eth0有什么关系?
- https://www.oreilly.com/learning/what-is-docker-networking#example-bridge-mode-networking