docker 容器调试

1 进入容器网络命名空间

查看容器的 pid

docker inspect -f '{{.State.Pid}}'      container_name 
docker inspect -f '{{.State.Pid}}'      container_id

以容器的名字 新建一个系统可以识别的 network ns

ln -sf /proc/$pid/ns/net "/var/run/netns/${container_name}" //$pid 为docker容器pid

进入容器的网络命令空间 执行 网络相关的命令

ip netns exec "${container_name}"  `command``
 ip netns exec   "${container_name}"    bash  

nsenter 使用

yum install util-linux -y
sudo docker inspect -f {{.State.Pid}}   xxx
sudo nsenter --target 3326 --mount --uts --ipc --net --pid

运行一个调试用容器 进入目标容器的pid ns

:docker run -d --name nginx -v `pwd`/nginx.conf:/etc/nginx/nginx.conf --net=container:pause --ipc=container:pause --pid=container:pause nginx

获取容器id

id=`sudo docker inspect caller  | jq  .[].Id`
docker run -it --net=container:$id  --ipc=container:$id  --pid=container:$id     centos:7
docker run -it --net=container:$id  --ipc=container:$id  --pid=container:$id  --privileged     centos:7
sudo docker run -it --net=container:$id  --ipc=container:$id  --pid=container:$id  --privileged
centos:7
yum -y install perf
perf top -p xx

火焰图

cd  /tmp/
perf record -F 99 -a -- sleep 30; ./jmaps
perf script | ./pkgsplit-perf.pl | grep java | ./flamegraph.pl > out.svg
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值