Linux namespace定位

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  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  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# 

 

你可能感兴趣的:(系统,Docker&K8S&虚拟化)