【问题标题】:How to capture packets for single docker container如何捕获单个 docker 容器的数据包
【发布时间】:2017-01-14 17:18:51
【问题描述】:

主机上运行着许多容器。我想为其中的一个容器捕获数据包。有没有办法做到这一点?

【问题讨论】:

  • Wireshark 是你所需要的
  • 按mac地址过滤网络。
  • stackoverflow.com/questions/24611001/…github.com/manell/wireshark 检查以上两个链接可能会有所帮助。
  • 我也在努力寻找这个。这是需要做的,但我正在努力获得正确的命令。 1、在host中找到docker创建的接口。请记住,一个是 docker 容器中的内部接口,一个是主机中的接口。 2. 我们可以简单地使用 $tcpdump -i 在那个接口上做 tcpdump

标签: networking docker


【解决方案1】:

您可以将一个容器的网络命名空间绑定到另一个容器:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多