nsenter介绍
nsenter命令是一个可以在指定进程的命令空间下运行指定程序的命令。它位于util-linux包中。典型的用途就是进入容器的网络命令空间。相当多的容器为了轻量级,是不包含较为基础的命令的,比如说ip address,ping,telnet,ss,tcpdump等等命令,这就给调试容器网络带来相当大的困扰:只能通过docker inspect ContainerID命令获取到容器IP,以及无法测试和其他网络的连通性。这时就可以使用nsenter命令仅进入该容器的网络命名空间,使用宿主机的命令调试容器网络。
安装方法
yum -y install util-linux
简单使用
我找了个容器,进入容器内部,执行nload提示命令不存在
[root@localhost ~]# docker exec -it 03 sh
/ # nload
sh: nload: not found
使用命令获取容器的pid
[root@localhost ~]# docker inspect -f {{.State.Pid}} 03
69345
使用nsenter进入69345的命名空间
[root@localhost ~]# nsenter -n -t69345
[root@localhost ~]# nload