Docker基础: Linux内核命名空间之(6)user namespace
发布日期:2021-06-30 20:22:42
浏览次数:2
分类:技术文章
本文共 2530 字,大约阅读时间需要 8 分钟。
作为开源Container技术代表的Docker,它跟Linux内核的Namespace和Cgroup两大特性密不可分。物有本末,事有终始。知所先后,则近道矣。理解Linux的这两大特性将有助于我们更深入的理解Docker。
在本文中我们将会使用unshare命令来演示Linux内核的user Namespace是如何动作的。
Namespace的历史
Namespace并不是Linux才推出的东西,早在很久之前,Unix上就有类似的东西,而HPUX和Solaris商用的Conatiner更是以前就有推出。而在Linux的2.6之后的版本Namespace就逐步的被加了进来。
Linux Namespace的6大类型
项番 | 类型 | 功能说明 |
---|---|---|
No.1 | MNT Namespace | 提供磁盘挂载点和文件系统的隔离能力 |
No.2 | IPC Namespace | 提供进程间通信的隔离能力 |
No.3 | Net Namespace | 提供网络隔离能力 |
No.4 | UTS Namespace | 提供主机名隔离能力 |
No.5 | PID Namespace | 提供进程隔离能力 |
No.6 | User Namespace | 提供用户隔离能力 |
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:~#
内容说明
项番 | 内容说明 |
---|---|
No.1 | linux会在/proc下创建所对应的进程相关的信息,ns则为Namespace的信息 |
No.2 | $$为当前进程PID,/proc/$$/ns下的Namespace的个数回随着Linux内核的高低不同显示的个数不同,因为Linux所支持的Namespace不是一次到位的 |
No.3 | user:[4026531837],不同的Namespace都有不同的编号,比如32968的user的namespace的编号就是4026531837 |
No.4 | 关于Cgroup会单独在后面进行说明 |
事前确认
确认当前进程PID
root@ubuntu:~# echo $$32968root@ubuntu:~#
使用unshare隔离user namespace
root@ubuntu:~# echo $$32968root@ubuntu:~# unshare --user /bin/bashnobody@ubuntu:~$
user的namespace的隔离倒是非常清晰,而且进程号也发生了变化
nobody@ubuntu:~$ echo $$34626nobody@ubuntu:~$
缺省的会映射到65534的用户名,可以通过做user mapping作进一步的设定,这里不再赘述。
nobody@ubuntu:~$ iduid=65534(nobody) gid=65534(nogroup) groups=65534(nogroup)nobody@ubuntu:~$
新user Namespace编号
nobody@ubuntu:~ echo 34626nobody@ubuntu: ls -l /proc/$$/ns
total 0 lrwxrwxrwx 1 nobody nogroup 0 Sep 15 16:02 cgroup -> cgroup:[4026531835] lrwxrwxrwx 1 nobody nogroup 0 Sep 15 16:02 ipc -> ipc:[4026531839] lrwxrwxrwx 1 nobody nogroup 0 Sep 15 16:02 mnt -> mnt:[4026531840] lrwxrwxrwx 1 nobody nogroup 0 Sep 15 16:02 net -> net:[4026531957] lrwxrwxrwx 1 nobody nogroup 0 Sep 15 16:02 pid -> pid:[4026531836] lrwxrwxrwx 1 nobody nogroup 0 Sep 15 16:02 user -> user:[4026532506] lrwxrwxrwx 1 nobody nogroup 0 Sep 15 16:02 uts -> uts:[4026531838] nobody@ubuntu:~$其他相关
内容 | URL |
---|---|
在CentOS7上使用LXC管理容器 | |
如何使用RHEL/CentOS 7安装创建和管理LXC (Linux Containers) |
转载地址:https://liumiaocn.blog.csdn.net/article/details/52549978 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月28日 18时13分30秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
月薪15~20k的前端面试问什么?
2019-04-30
在 Vue 中用 Axios 异步请求API
2019-04-30
mysql——介绍及安装与基本用法
2019-04-30
MySQL数据库之索引
2019-04-30
MYSQL——事务操作+视图+存储引擎
2019-04-30
Mysql——完全备份+增量备份+备份恢复
2019-04-30
MySQL进阶查询(SELECT 语句高级用法)
2019-04-30
Mysql 之主从复制
2019-04-30
LVS负载均衡------NAT模式
2019-04-30
squid代理-----透明代理模式
2019-04-30
squid代理介绍----ACL控制应用+sarg日志分析+反向代理
2019-04-30
redis集群之主从模式+哨兵模式
2019-04-30
JavaScript原生开关灯效果
2019-04-30
企业邮箱如何申请注册,邮箱申请如何免费注册?
2019-04-30
微信企业邮箱,手机邮箱格式地址怎么写?
2019-04-30
公司如何申请企业邮箱,公司邮箱怎么申请,公司企业邮箱哪个好?
2019-04-30
电子邮箱账号怎么申请,怎样申请邮箱账号呢
2019-04-30
邮箱怎么发邮件,邮件发信量多少,职场新人怎么发汇报邮件呢?
2019-04-30