捕获docker的数据包

简介: 正常情况下,操作系统层面可以通过 tcpdump 来抓包。但对于容器环境,根据所使用的 base 镜像的不同,容器内不一定含有抓包工具,所以无法直接抓包。本文简要介绍如何通过 nsenter 工具来对容器快速抓包。

1. 查询docker的PID

在宿主机上,使用如下指令获取容器的 root pid。即容器内 top 显示 pid 为 1 的进程。容器内其它运行的进程均为其子进程或子子进程:

#命令格式:docker inspect 参数 筛选条件 容器名
docker inspect --format "{{.State.Pid}}" [docker-name]
187420

2. 使用 nsenter 切换网络命名空间:

在宿主机上,使用如下指令,将网络命名空间切换为容器的网络命名空间:

nsenter -n -t 187420

2. 使用tcpdump抓包

#命令说明:tcpdump抓取网卡eth0,tcp协议,端口80的包。
tcpdump -i eth0 tcp and port 80 -vvv
posted @ 2020-12-25 16:21  自在拉基  阅读(547)  评论(0编辑  收藏  举报