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