1.docker

Docker理念

Docker - Build,Ship,and Run Any App,Angwhere.

容器底层技术-Linux Cgroup

Docker使用Linux Cgroup技术来实现容器实例的资源管理,或者说资源限制

cgroup子系统

资源管理

对应的docker接口

memory

限制cgroup中的任务所能使用的内存上限

-m ...

cpu

使用调度程序提供对CPU的cgoup任务访问

-c ...

Cpuset

为cgroup中的任务分配独立CPU和内存节点

--cpuset-cpus ...

Blkio

为块设备设定输入/输出限制

--vlkio-weight ...

容器底层关键技术-Linux Namespace

Docker使用linux namespace技术来实现容器实例间的资源隔离

Namespace

系统调用参数

隔离内容

PID namespace

CLONE_NEWPID

隔离不同用户之间的进程,不同的namespace中可以有相同的pid。允许嵌套,可以方便实现docker in docker

UTS namespace

CLONE_NEWUTS

允许每个容器拥有独立的hostname和domain name,使其在网络上可以被视为独立的节点。

IPC namespace

CLONE_NEWIPC

保证容器间的进程交互,进行信号量,消息队列和共享内存的隔离

Network namespace

CLONE_NEWNET

实现网络隔离,每个net namespace有独立的network devices、ip addresses、ip routing tables、/proc/net目录

Mount namespace

CLONE_NEWNS

隔离不同namespace的进程看到的目录结构,每个namespace的容器在/proc/mounts的信息只包含所在namespace的mount point

User namespace

CLONE_NEWUSER

允许每个容器可以有不同的user和groupid

容器底层关键技术-联合文件系统

一个基于文件的接口,通过把一组目录交错起来,形成一个单一视图

Last updated

Was this helpful?