查看linux命名空间的指令,linux命名空间的相关命
令-(sunznx)振翅飞翔
17 July 2019
查看 docker 进程的 piddocker inspect -f {{.State.Pid}} xxx
lsnslsns -h
-n, --noheadings don't print headings
-p, --task print process namespaces
-t, --type namespace type (mnt, net, ipc, user, pid, uts)
# 列出进程号为 102044 的 net 和 mnt 命名空间
lsns -p 102044 -t net -t mnt
# 列出系统上所有 net 的命名空间
lsns -t net
nsenternsenter -h
--target
--mount[=]
--uts[=]
--ipc[=]
--net[=]
--pid[=]
--user[=]
lsns -p 102044
NS TYPE NPROCS PID USER COMMAND
4026531837 user 214 1 root /usr/lib/systemd/systemd --switched-root --system --deserialize 22
4026533663 ipc 2 100870 root /pause
4026533666 net 2 100870 root /pause
4026533727 mnt 1 102044 polkitd redis-server *:637
4026533728 uts 1 102044 polkitd redis-server *:637
4026533729 pid 1 102044 polkitd redis-server *:637
# NPROCS number of processes in the namespace
# PID lowest PID in the namespace
⾸先观察到 102044 这个进程本⾝实际上只有 mnt, uts, pid 这三个命名空间,user, ipc, net 这三个命名空间是从其他进程共享过来的# 进⼊命名空间,但不使⽤命名空间的 net 和 mnt 命名空间 (不使⽤ mnt 命名空间的好处是可以使⽤宿主机的命令⾏⼯具)
namespace是干嘛的nsenter nsenter -t 102044 --ipc --uts --pid ps -aux
# 进⼊命名空间,并且使⽤命名空间的 net 和 mnt 命名空间
nsenter nsenter -t 102044 --ipc --uts --net --pid --mount ps -aux nsenter nsenter -t 102044 \
--ipc=/proc/102044/ns/ipc --uts=/proc/102044/ns/uts \
--net=/proc/102044/ns/net --pid=/proc/102044/ns/pid \
--mount=/proc/102044/ns/mnt --user=/proc/102044/ns/user ip netns 只进⼊⽹络命令空间最简单的⽅法# 链接单个 docker 容器mkdir -p /var/run/netns
ln -s /proc/102044/ns/net /var/run/netns/102044
ip netns exec 102044 ip addr show
# 链接所有 docker 容器
ln -s /var/run/docker/netns/* /var/run/netns/
挂载 docker ⽬录ls /proc/$PID/root
bindfs /proc/$PID/root /media
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论