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
ipvsadm -ln