Docker基础: Linux内核命名空间之(5)pid namespace
来源:互联网 发布:网络用语qb是什么意思 编辑:程序博客网 时间:2024/05/16 04:43
作为开源Container技术代表的Docker,它跟Linux内核的Namespace和Cgroup两大特性密不可分。物有本末,事有终始。知所先后,则近道矣。理解Linux的这两大特性将有助于我们更深入的理解Docker。
在本文中我们将会使用unshare命令来演示Linux内核的pid Namespace是如何动作的。
Namespace的历史
Namespace并不是Linux才推出的东西,早在很久之前,Unix上就有类似的东西,而HPUX和Solaris商用的Conatiner更是以前就有推出。而在Linux的2.6之后的版本Namespace就逐步的被加了进来。
Linux Namespace的6大类型
Ubuntu版本
root@ubuntu:~# uname -aLinux ubuntu 4.4.0-31-generic #50-Ubuntu SMP Wed Jul 13 00:07:12 UTC 2016 x86_64 x86_64 x86_64 GNU/Linuxroot@ubuntu:~#
事前确认
确认当前进程PID
root@ubuntu:~# echo $$32968root@ubuntu:~#
确认当前进程的各个namespace
root@ubuntu:~# ls -l /proc/$$/nstotal 0lrwxrwxrwx 1 root root 0 Sep 15 10:23 cgroup -> cgroup:[4026531835]lrwxrwxrwx 1 root root 0 Sep 15 10:23 ipc -> ipc:[4026531839]lrwxrwxrwx 1 root root 0 Sep 15 10:23 mnt -> mnt:[4026531840]lrwxrwxrwx 1 root root 0 Sep 15 10:23 net -> net:[4026531957]lrwxrwxrwx 1 root root 0 Sep 15 10:23 pid -> pid:[4026531836]lrwxrwxrwx 1 root root 0 Sep 15 10:23 user -> user:[4026531837]lrwxrwxrwx 1 root root 0 Sep 15 10:23 uts -> uts:[4026531838]root@ubuntu:~#
内容说明
事前确认
确认当前进程PID
root@ubuntu:~# echo $$32968root@ubuntu:~#
使用unshare隔离pid namespace
root@ubuntu:~# echo $$32968root@ubuntu:~# unshare --fork --pid /bin/bashroot@ubuntu:~#
好像没有任何变化,其实这个已经不是刚才我们的32968进程了
root@ubuntu:~# echo $$1root@ubuntu:~#
进程号是1,难道进程号1不是init么?在起一个终端确认一下情况吧. 发现init还是好好的在用进程号1在那里存在着。
admin01@ubuntu:~$ ps -ef |grep init |grep -v greproot 1 0 0 Sep14 ? 00:00:04 /sbin/initadmin01@ubuntu:~$
再来确认一下,整体的进程关系,从这里可以清晰地看到整体从进程1到启动的这个相对进程号为1的进程其实真正的PID应该是34221
因为它是32968使用unshare所生成的子进程。
其他相关
0 0
- Docker基础: Linux内核命名空间之(5)pid namespace
- Docker基础: Linux内核命名空间之(1) mnt namespace
- Docker基础: Linux内核命名空间之(2) ipc namespace
- Docker基础: Linux内核命名空间之(3)net namespace
- Docker基础: Linux内核命名空间之(4)uts namespace
- Docker基础: Linux内核命名空间之(6)user namespace
- Linux内核中namespace之PID namespace
- linux内核PID管理--命名空间
- 操作系统虚拟化底层基础之命名空间(namespace)
- Linux内核原理-pid namespace
- Linux内核原理-pid namespace
- 命名空间(namespace)
- 命名空间(namespace)
- 内核对象命名空间(Kernel object namespace)
- C++之namespace命名空间
- namespace命名空间-之使用
- Docker基础技术:Linux Namespace(上)
- Docker基础技术:Linux Namespace(上)
- 双网卡服务器SOCKET编程指定客户端通信网卡
- configure: error: Cannot find php-config. Please use --with-php-config=PATH
- 数据结构学习笔记24 二叉树
- Hadoop实战演练:搜索数据分析----计算结果存储到Mysql(3)
- 腾讯云CentOS安装tomcat,并解决外部无法访问
- Docker基础: Linux内核命名空间之(5)pid namespace
- 51nod-1079中国剩余定理
- C++学习笔记--正则表达式
- 3-4 计算长方形的周长和面积
- 使用cuda加速图像缩放的例子
- android studio PhotoView配置与用法
- ActiveMQ 了解
- multiple markers at this line
- 51nod-1081子段求和