抓包的容器里,没有安装tcpdump
命令,我们可以去容器所在宿主机上,使用 nsenter
命令切换网络命名空间后,使用宿主机上的tcpdump
命令,对容器进行抓包分析。
此例中,我要抓取容器中端口是5240的包,步骤如下
获取容器的 PID
根据容器名查找容器编号。
docker ps | grep mysql | awk '{print $1}'
获取 PID
docker inspect --format "{{.State.Pid}}" 5cc6b84c0fc4
切换命名空间
使用nsenter
命令切换命名空间。
nsenter -n -t 1602767
此时可以使用tcpdump
命令对容器网络进行抓包。