容器内无tcpdump,如何在宿主机上抓容器的包

抓包的容器里,没有安装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命令对容器网络进行抓包。

容器内无tcpdump,如何在宿主机上抓容器的包_第1张图片

 

你可能感兴趣的:(docker,java,linux)