linux container (LXC)内核知识碎记

本文详细介绍了Linux Container (LXC) 的核心组件——namespace,包括UTS, IPC, PID, Mount 和 Network namespaces。讨论了如何通过clone(), setns(), unshare()系统调用来创建和管理namespace,以及PID namespace中init进程的特殊性。此外,还提到了mount propagation在文件系统挂载点隔离中的作用,以及user namespace对用户ID和权限的隔离。" 115914860,7845900,理解bed文件坐标系统与操作,"['基因组学', '生物信息学', '数据格式']
摘要由CSDN通过智能技术生成

linux container (LXC)内核知识碎记

linux namespace资源隔离

在linux内核中一共有下面六种namespace

namespace 系统调用参数 隔离内容
UTS CLONE_NEWUTS 主机名与域名
IPC CLONE_NEWIPC 信号量、消息队列和贡享内存
PID CLONE_NEWPID 进程编号
NETWORK CLONE_NEWNET 网络设备、网络栈
Mount CLONE_NEWNS 挂载点(文件系统)
USER CLONE_NEWUSER 用户和用户组

在linux 3.8以后的内核版本中,就对这六种namespace有了全面支持,还提供了相关的api函数,一共有四种方式进行namespace API操作。

  1. 通过clone()在创建新进程时创建namespace
int clone(int (*child_func)(void * args),void *child_stack,int flags,void * arg);
//clone()实际上是linux系统调用fork()的一种更通用的实现方式,他可以通过flags来控制使用了多少功能,一共有20多种CLONE_*标志位来控制clone进程的方方面面。
/**
四个参数说明:
child_func 传入子进程运行的程序主函数
child_stack 子进程使用栈空间的大小
flags 表示使用了哪些CLONE_*标志位。
args 用于传入主函数的参数.
*/
  1. 查看/proc/[pid]/ns文件

从linux内核3.8起,用户就可以通过查看/proc/[pid]/ns文件下看到指向不同namespace号的文件,如果两个进程的编号相同,就说明他们在同一个namespace下。/proc/[pid]/ns里设置这些link的目的还有一个就是,一旦上述link文件被打开,只要打开的文件描述符在,那么就算该namespace下所有的进程都已经结束,这个namespace也会存在,这样后续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值