2016-06-16 32 views
8

Docker tworzy te wirtualne interfejsy Ethernet veth[UNIQUE ID] wymienione w ifconfig. Jak mogę się dowiedzieć, który interfejs należy do określonego kontenera dokowanego?Dowiedz się, który interfejs sieciowy należy do kontenera dokowanego

Chcę słuchać ruchu TCP.

+0

Wydaje się to kwestią otwartą tutaj https://github.com/docker/docker/issues/14666 i istnieją pewne obejścia. Nie jestem dobry w networkingu i naprawdę nie rozumiem tych obejść, więc postanowiłem po prostu filtrować przez hosta, kiedy używam tcpdump. Pracuje dla mnie. Może zadziała, jeśli użyjesz tcpdump lub jeśli twoje narzędzie ma podobne filtry. –

Odpowiedz

5

Aby zlokalizować interfejs
W moim przypadku uzyskiwanie wartości z pojemnika było jak (sprawdź eth0 do):

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

, a następnie:

$ ip ad | grep 123 
123: [email protected]: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker_gwbridge state UP group default 

Sprawdź z tcpdump -i vethd3234u4


Informacje na temat mysteriou s iflink z 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:  [email protected] 
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. 
+1

Nie działa dla mnie. iflink w kontenerze to 14. "reklama ip" na hoście nie ma interfejsu 14. "ip reklama" w kontenerze robi. Wersja Docker 17.03.1-ce. –

+0

Zauważam, że interfejs 12 w moim kontenerze to interfejs 13 gościa. Natomiast interfejs 14 w moim drugim kontenerze to interfejs 15 na gościu. Próbowałem przechwytywać w wireshark (uruchomiony na hoście) i zorientowałem się, który z nich opiera się na ruchu. –