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?