Linux Cgroup系列(03):限制cgroup的进程数(subsystem之pids)

2016-11-13
阅读 6 分钟
18.3k
注意:这里的task指通过fork和clone函数创建的进程,由于clone函数也能创建线程(在Linux里面,线程是一种特殊的进程),所以这里的task也包含线程,本文统一以进程来代表task,即本文中的进程代表了进程和线程 本篇所有例子都在ubuntu-server-x86_64 16.04下执行通过

Linux Cgroup系列(02):创建并管理cgroup

2016-10-21
阅读 7 分钟
28.1k
本文将创建并挂载一颗不和任何subsystem绑定的cgroup树,用来演示怎么创建、删除子cgroup,以及如何往cgroup中添加和删除进程。

Linux Cgroup系列(01):Cgroup概述

2016-09-16
阅读 10 分钟
46.3k
cgroup和namespace类似,也是将进程进行分组,但它的目的和namespace不一样,namespace是为了隔离进程组之间的资源,而cgroup是为了对一组进程进行统一的资源监控和限制。

Linux Namespace系列(09):利用Namespace创建一个简单可用的容器

2016-09-15
阅读 5 分钟
11.1k
本文将演示如何利用namespace创建一个完整的容器,并在里面运行busybox。如果对namespace不是很熟悉,请先参考前面几遍介绍不同类型namespace的文章。

Linux Namespace系列(08):user namespace (CLONE_NEWUSER) (第二部分)

2016-09-15
阅读 9 分钟
10.1k
权限涉及的范围非常广,所以导致user namespace比其他的namespace要复杂; 同时权限也是容器安全的基础,所以user namespace非常重要。

Linux Namespace系列(07):user namespace (CLONE_NEWUSER) (第一部分)

2016-09-15
阅读 11 分钟
13.8k
user namespace可以嵌套(目前内核控制最多32层),除了系统默认的user namespace外,所有的user namespace都有一个父user namespace,每个user namespace都可以有零到多个子user namespace。 当在一个进程中调用unshare或者clone创建新的user namespace时,当前进程原来所在的user namespace为父user namespace,新的us...

Linux Namespace系列(06):network namespace (CLONE_NEWNET)

2016-09-15
阅读 6 分钟
13.6k
network namespace用来隔离网络设备, IP地址, 端口等. 每个namespace将会有自己独立的网络栈,路由表,防火墙规则,socket等。

Linux Namespace系列(05):pid namespace (CLONE_NEWPID)

2016-09-15
阅读 10 分钟
12.3k
PID namespace可以嵌套,也就是说有父子关系,在当前namespace里面创建的所有新的namespace都是当前namespace的子namespace。父namespace里面可以看到所有子孙后代namespace里的进程信息,而子namespace里看不到祖先或者兄弟namespace里的进程信息。

Linux Namespace系列(04):mount namespaces (CLONE_NEWNS)

2016-09-15
阅读 6 分钟
18.7k
Mount namespace用来隔离文件系统的挂载点, 使得不同的mount namespace拥有自己独立的挂载点信息,不同的namespace之间不会相互影响,这对于构建用户或者容器自己的文件系统目录非常有用。

Linux Namespace系列(03):IPC namespace (CLONE_NEWIPC)

2016-09-14
阅读 4 分钟
10.1k
IPC namespace用来隔离System V IPC objects和POSIX message queues。其中System V IPC objects包含Message queues、Semaphore sets和Shared memory segments.

Linux Namespace系列(02):UTS namespace (CLONE_NEWUTS)

2016-09-14
阅读 10 分钟
18.9k
这两个资源可以通过sethostname(2)和setdomainname(2)函数来设置,以及通过uname(2), gethostname(2)和getdomainname(2)函数来获取.(这里括号中的2表示这个函数是system call,具体其他数字的含义请参看man的帮助文件)

Linux Namespace系列(01):Namespace概述

2016-09-14
阅读 4 分钟
33.1k
Namespace是对全局系统资源的一种封装隔离,使得处于不同namespace的进程拥有独立的全局系统资源,改变一个namespace中的系统资源只会影响当前namespace里的进程,对其他namespace中的进程没有影响。