什么是 Namespace
| Namespace名称 | 作用 | 内核版本 |
| mount(mnt) | 隔离挂载点 | 2.4.19 |
| Process ID (pid) | 隔离进程 ID | 2.6.24 |
| Network (net) | 隔离网络设备、端口号等 | 2.6.29 |
| Interprocess Communication (ipc) | 隔离 System V IPC 和 POSIX message queues | 2.6.19 |
| UTS Namespace(uts) | 隔离主机名和域名 | 2.6.19 |
| User Namespace (user) | 隔离用户和用户组 | 3.8 |
| Control group (cgroup) Namespace | 隔离 Cgroups 根目录 | 4.6 |
| Time Namespace | 隔离系统时间 | 5.6 |
(1)Mount Namespace
使用以下命令创建一个 bash 进程并且新建一个 Mount Namespace:
[root@weijing ~]# unshare --mount --fork /bin/bash
[root@weijing ~]# mkdir /tmp/tmpfs[root@weijing ~]# mount -t tmpfs -o size=20m tmpfs /tmp/tmpfs
[root@weijing ~]# df -hFilesystem Size Used Avail Use% Mounted on/dev/vda1 500G 1.4G 499G 1%devtmpfs 16G 0 16G 0% devtmpfs 16G 0 16G 0% dev/shmtmpfs 16G 0 16G 0% sys/fs/cgrouptmpfs 16G 57M 16G 1% runtmpfs 3.2G 0 3.2G 0% run/user/1000tmpfs 20M 0 20M 0% tmp/tmpfs
[root@weijing ~]# df -hFilesystem Size Used Avail Use% Mounted ondevtmpfs 16G 0 16G 0% devtmpfs 16G 0 16G 0% dev/shmtmpfs 16G 57M 16G 1% runtmpfs 16G 0 16G 0% sys/fs/cgroup/dev/vda1 500G 1.4G 499G 1%tmpfs 3.2G 0 3.2G 0% run/user/1000
[root@weijing ~]# ls -l proc/self/ns/total 0lrwxrwxrwx. 1 root root 0 Sep 4 08:20 ipc -> ipc:[4026531839]lrwxrwxrwx. 1 root root 0 Sep 4 08:20 mnt -> mnt:[4026532239]lrwxrwxrwx. 1 root root 0 Sep 4 08:20 net -> net:[4026531956]lrwxrwxrwx. 1 root root 0 Sep 4 08:20 pid -> pid:[4026531836]lrwxrwxrwx. 1 root root 0 Sep 4 08:20 user -> user:[4026531837]lrwxrwxrwx. 1 root root 0 Sep 4 08:20 uts -> uts:[4026531838]
[centos@centos7 ~]# ls -l proc/self/ns/total 0lrwxrwxrwx. 1 centos centos 0 Sep 4 08:20 ipc -> ipc:[4026531839]lrwxrwxrwx. 1 centos centos 0 Sep 4 08:20 mnt -> mnt:[4026531840]lrwxrwxrwx. 1 centos centos 0 Sep 4 08:20 net -> net:[4026531956]lrwxrwxrwx. 1 centos centos 0 Sep 4 08:20 pid -> pid:[4026531836]lrwxrwxrwx. 1 centos centos 0 Sep 4 08:20 user -> user:[4026531837]lrwxrwxrwx. 1 centos centos 0 Sep 4 08:20 uts -> uts:[4026531838]
(2)PID Namespace
[root@weijing ~]# unshare --pid --fork --mount-proc bin/bash
[root@centos7 centos]# ps auxUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.0 0.0 115544 2004 pts/0 S 10:57 0:00 bashroot 10 0.0 0.0 155444 1764 pts/0 R+ 10:59 0:00 ps aux
(3)UTS Namespace
[root@weijing ~]# sudo unshare --uts --fork bin/bash
[root@weijing ~]# hostname -b wj[root@weijing ~]# hostnamewj
[root@weijing ~]# hostnameweijing
(4)IPC Namespace
[root@weijing ~]# sudo unshare --ipc --fork bin/bash
ipcs -q 命令:用来查看系统间通信队列列表。
ipcmk -Q 命令:用来创建系统间通信队列。
[root@weijing ~]# ipcs -q------ Message Queues --------key msqid owner perms used-bytes messages
[root@weijing ~]# ipcmk -QMessage queue id: 0
[root@weijing ~]# ipcs -q------ Message Queues --------key msqid owner perms used-bytes messages0x73682a32 0 root 644 0 0
[root@weijing ~]# ipcs -q------ Message Queues --------key msqid owner perms used-bytes messages
(5)User Namespace
[root@weijing ~]# unshare --user -r /bin/bash
[root@weijing ~]# iduid=0(root) gid=0(root) groups=0(root),65534(nfsnobody) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@weijing ~]# rebootFailed to open /dev/initctl: Permission deniedFailed to talk to init daemon.
(6)Net Namespace
# ip add1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 02:11:b0:14:01:0c brd ff:ff:ff:ff:ff:ffinet 172.20.1.11/24 brd 172.20.1.255 scope global dynamic eth0valid_lft 86063337sec preferred_lft 86063337secinet6 fe80::11:b0ff:fe14:10c/64 scope linkvalid_lft forever preferred_lft forever3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group defaultlink/ether 02:42:82:8d:a0:df brd ff:ff:ff:ff:ff:ffinet 172.17.0.1/16 scope global docker0valid_lft forever preferred_lft foreverinet6 fe80::42:82ff:fe8d:a0df/64 scope linkvalid_lft forever preferred_lft forever
[root@weijing ~]# sudo unshare --net --fork /bin/bash
[root@weijing ~]# ip add1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
文章转载自潍鲸,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




