docker利用共享namespace的方式抓包
容器环境下,镜像要求尽可能精简,剔除无效的依赖,达到最为精简的状态,tcpdump 命令肯定不会包含进去,因此决定采用直接启动一个容器然后join到pod的pause容器(本身 在Pod内部,该容器的一个目的就是共享整个Pod的net namespace)上,进行抓包操作。
dockerhub上找到tcpdump镜像拉取下来,找到需要抓包的pod所在节点,登录上去,执行docker ps | grep redisxxxxx
找到属于该pod的所有容器,进而找到pause容器,记录pause容器id 执行命令:
docker run --network=container:pauseId --entrypoint=sh -ti corfr/tcpdump
tcpdump -i eth0 -e -vvv -nnn
参数含义解释:
-i 进行容器交互式命令行
-t 分配tty
- –entrypoint 复写镜像中指定的entrypoint
- –network 指定容器使用的网络,container:xxx表示共享 xxxx容器的net namespace
还没有评论,来说两句吧...