查看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 命名空间的好处是可以使用宿主机的命令行工具)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值