Docker技术内幕1——容器技术浅析

目前两个比较火的容器技术是LXC和Docker。

LXC的项目地址是:https://github.com/lxc/lxc

Docker的项目地址是:https://github.com/moby/moby

容器技术主要包括Namespace和Cgroup这两个内核特性。

Namespace主要做访问隔离。原理是针对一类资源进行抽象,并将其封装在一起提供给一个容器使用,对于这类资源,因为每个容器都有自己的抽象,而他们彼此之间是不可见的,所以就可以做到访问隔离。

Cgroup是control group的简称,它主要是做资源控制。其原理是将一组进程放在一个控制组里,通过给这个控制组分配指定的可用资源,达到控制这一组进程可用资源的目的。

我们可用把容器视为如下四个部分组成:

Namespace:访问隔离

Cgroup:资源控制

rootfs:文件系统隔离

容器引擎:生命周期控制


========================================


Cgroup简介:

Cgroup是Linux内核提供的一个特性,用于限制和隔离一组进程对系统资源的使用。Cgroup从2.6.24开始进入内核主线,现在各大发行版都默认打开了Cgroup特性。Cgroup中实现的子系统及作用如下:

devices:设备权限控制。

cpuset:分配指定的CPU和内存节点。

cpu:控制CPU占用率。

cpuacct:统计CPU使用情况.

memory:限制内存的使用上限。

freezer:冻结(暂停)Cgroup中的进程.

net_cls:配合traffic controller限制网络带宽。

net_prio:设置进程的网络流量优先级。

huge_tlb:限制HugeTLB的使用。

perf_event:允许Pref工具基于Cgroup分组做性能监测。


=======================================


Namespace简介:

Namespace是将内核的全部资源做封装,使得每个Namespace都有一份独立的资源,因此不同的进程在各自的Namespace内对同一种资源的使用互不干扰。目前Linux内核共实现了6中Namespace:

IPC:隔离System V IPC和POSIX消息队列。

Network:隔离网络资源。

Mount:隔离文件系统挂载点。

PID:隔离进程ID。

UTS:隔离主机和域名。

User:隔离用户ID和组ID。

你可能感兴趣的:(Docker与云安全)