linux下nsenter命令介绍

nsenter命令是一个可以在指定进程的命令空间下运行指定程序的命令,它位于util-linux包中,可以直接使用yum进行安装

yum install -y util-linux

用nsenter --help可以查看命令帮助

nsenter [options] [program [arguments]]
options:
-t, --target pid:指定被进入命名空间的目标进程的pid
-m, --mount[=file]:进入mount命令空间。如果指定了file,则进入file的命令空间
-u, --uts[=file]:进入uts命令空间。如果指定了file,则进入file的命令空间
-i, --ipc[=file]:进入ipc命令空间。如果指定了file,则进入file的命令空间
-n, --net[=file]:进入net命令空间。如果指定了file,则进入file的命令空间
-p, --pid[=file]:进入pid命令空间。如果指定了file,则进入file的命令空间
-U, --user[=file]:进入user命令空间。如果指定了file,则进入file的命令空间
-G, --setgid gid:设置运行程序的gid
-S, --setuid uid:设置运行程序的uid
-r, --root[=directory]:设置根目录
-w, --wd[=directory]:设置工作目录

最近在容器中测试网络该命令,所以记录下操作过程

先用inspect命令查看Pid

docker inspect 4b43d6ac25cd | grep Pid
            "Pid": 5337,
            "PidMode": "",
            "PidsLimit": null,

然后可以通过这个Pid来借用容器内部网络

nsenter -n -t <Pid>

这样就可以以容器的网络来运行本机的一些命令操作,很方便

docker inspect 025f9c397bbe | grep -i sandbox
                "io.kubernetes.docker.type": "podsandbox",
            "SandboxID": "203bca786f650b4b764ec6b2c47975c1c0933cf69ebeb93b28ec52754e10fcd3",
            "SandboxKey": "/var/run/docker/netns/default",
nsenter --net=/var/run/docker/netns/default sh
iptables -nvL -t mangle

微信截图_20220705211430.png

ipvsadm -ln

微信截图_20220705211458.png

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://sulao.cn/post/854.html