docker容器内的网络抓包

当docker容器的网络模式不是--net=host(如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口)时,容器和宿主机的网络互相独立,而容器一般也不会有安装tcpdump。因此,无法直接抓取容器内的包。

有两种方式来对容器进行抓包:
在docker容器内安装tcpdump工具来直接抓包;使用宿主机上的tcpdump工具对容器进程抓包。

1,在docker容器内安装tcpdump工具来直接抓包

  • 获取docker id

    docker ps | grep xxx

  • copy tcpdump安装包和依赖包到容器内

    docker cp libpcap0-0.9.8-50.10.1.x86_64.rpm container_id:/tmp/
    docker cp tcpdump-3.9.8-1.21.x86_64.rpm container_id:/tmp/

  • 进入容器 安装tcpdump后进行抓包

    docker exec -it -u root container_id bash
    rpm -ivh *.rpm

也可直接使用这个tcpdump文件(已编译好 免安装 可直接使用)
docker cp /file/to/path/tcpdump container_id:/tmp/<

你可能感兴趣的:(运维,java)