1、lsns命令查看系统中namespace
[root@localhost hotspot]# lsns
NS TYPE NPROCS PID USER COMMAND
4026531836 pid 324 1 root /usr/lib/systemd/systemd --switched-root --system --deserialize 22
4026531837 user 326 1 root /usr/lib/systemd/systemd --switched-root --system --deserialize 22
4026531838 uts 322 1 root /usr/lib/systemd/systemd --switched-root --system --deserialize 22
4026531839 ipc 322 1 root /usr/lib/systemd/systemd --switched-root --system --deserialize 22
4026531840 mnt 312 1 root /usr/lib/systemd/systemd --switched-root --system --deserialize 22
类型 | 说明 | 备注 |
NS | namespace identifier (inode number) | namespace本质体现在文件上 |
TYPE | kind of namespace | namespace类型,目前支持pid、user、utc、net、mount、ipc以及cgroup |
NPROCS | number of processes in the namespace | 当在当前namespace中有多少进程 |
PID | lowest PID in the namespace | 进程id |
USER | username of the PID | 用户 |
COMMAND | command line of the PID | 进程启动参数 |
2、nsenter命令进入namespace
3、docker容器net namespace
我们可以通过ip netns创建net namespace,例如:ip netns add net0, 该命令执行完毕后会在/var/run/netns目录下创建以net0的一个文件,后续操作均是操作这个文件。但是docker创建的net namesapce 无法直接通过ip netns进行管理,注意这里是无法直接。那么我们应该怎么管理呢? docker 创建的net namesapce文件保存在了/var/run/docker/netns中,这个目录中所有文件都是net namespace,其中default文件指向的命名空间是物理主机net namesapce,换句话说如果我们在启动容器时指定的网路模式为--net=host,就是通过default文件。那么具体如何操作呢?其实很简单。
我们通过ln -s 创建软连接文件,然后将/var/run/docker/netns中文件,软链接到/var/run/netns下即可。例如:
[root@localhost ~]# ln -s /var/run/docker/netns/ecce4955191c /var/run/netns/
[root@localhost ~]# ip netns exec ecce4955191c /bin/sh
sh-4.2# ifconfig -a
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.2 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:ac:11:00:02 txqueuelen 0 (Ethernet)
RX packets 161 bytes 32161 (31.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
sh-4.2#