如何捕获单个 docker 容器的数据包
Posted
技术标签:
【中文标题】如何捕获单个 docker 容器的数据包【英文标题】:How to capture packets for single docker container 【发布时间】:2017-01-14 17:18:51 【问题描述】:主机上运行着许多容器。我想为其中的一个容器捕获数据包。有没有办法做到这一点?
【问题讨论】:
Wireshark 是你所需要的 按mac地址过滤网络。 ***.com/questions/24611001/… 和 github.com/manell/wireshark 检查以上两个链接可能会有所帮助。 我也在努力寻找这个。这是需要做的,但我正在努力获得正确的命令。 1、在host中找到docker创建的接口。请记住,一个是 docker 容器中的内部接口,一个是主机中的接口。 2. 我们可以简单地使用 $tcpdump -i您可以将一个容器的网络命名空间绑定到另一个容器:
docker run -it --rm --net container:<container_name> \
nicolaka/netshoot tcpdump ...
要了解更多关于上面使用的 netshoot 图像,请参阅:https://github.com/nicolaka/netshoot
【讨论】:
【参考方案2】:来自和用于带有 Wireshark 的工作站:
docker exec -ti <container id> cat /sys/class/net/eth0/iflink
28
ip link | grep 28
28: veth11b0a6c@if27: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP mode DEFAULT group default
【讨论】:
【参考方案3】:使用nsenter -n -t pid
命令,进入同一个网络命名空间,然后执行tcpdump
【讨论】:
以上是关于如何捕获单个 docker 容器的数据包的主要内容,如果未能解决你的问题,请参考以下文章
使用burpsuite等代理工具抓取docker容器中的数据包
尝试从主机连接到 mysql docker 容器时出现“读取初始通信数据包”错误