network-programmingdockerifconfig

Find out which network interface belongs to docker container


Docker creates these virtual ethernet interfaces veth[UNIQUE ID] listed in ifconfig. How can I find out which interface belongs to a specific docker container?

I want to listen to the tcp traffic.


Solution

  • To locate interface
    In my case getting value from container was like (check eth0 to):

    $ docker exec -it my-container cat /sys/class/net/eth1/iflink
    123
    

    And then:

    $ ip ad | grep 123
    123: vethd3234u4@if122: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker_gwbridge state UP group default
    

    Check with tcpdump -i vethd3234u4


    Reference about mysterious iflink from http://lxr.free-electrons.com/source/Documentation/ABI/testing/sysfs-class-net:

    150 What:           /sys/class/net/<iface>/iflink
    151 Date:           April 2005
    152 KernelVersion:  2.6.12
    153 Contact:        netdev@vger.kernel.org
    154 Description:
    155                 Indicates the system-wide interface unique index identifier a
    156                 the interface is linked to. Format is decimal. This attribute is
    157                 used to resolve interfaces chaining, linking and stacking.
    158                 Physical interfaces have the same 'ifindex' and 'iflink' values.