Docker SDK获取networking接口以及ifindex

即使这个问题已经在几个不同的地方得到解答,但是还没有完整的答案。

其中一个问题是,

找出哪个networking接口属于docker集装箱

在Docker论坛上有一个关于这个的讨论 ,我也在下面添加了一些引用。

我正在尝试将dockernetworking接口映射到主机中的接口。

当docker容器启动时,它会创buildveth对,并将一个对等体放在主机的桥上,另一端放在docker容器中,如下所示。

eth0和vethxxx之间的关系

这些接口之间的关系只是来自这些接口的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客户端泊坞

下面更多的相关链接,

  1. docker0和eth0有什么关系?
  2. https://www.oreilly.com/learning/what-is-docker-networking#example-bridge-mode-networking