Docker 容器的隔离性

Posted sharesdk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker 容器的隔离性相关的知识,希望对你有一定的参考价值。

Docker 容器的隔离性 就是 使用Linux namespace 来隔离运行环境和成 cgroup 限制容器使用的资源。 

namespace 可以顾名思义 命名空间;所以可以理解为每个独立的容器的全局资源空间。

Linux从2.4.19 就开始引入了 namespace 概念;

Linux 内核 实现了6 种namespace :

IPC:隔离system V IPC和POSIX消息队列 
Network:隔离网络资源 
Mount:隔离文件系统挂载点 
PID:隔离进程PID 
UTS:隔离主机名和域名 
User:隔离用户ID和组ID

 

技术分享图片

 

Linux control group 

Linux cgroup 可以控制对系统资源的分配CPU内存 磁盘IO 网络带宽 和设备访问限制设置。

它可以隔离一个进程的集合,分配限制资源CPU 内核使用。

技术分享图片

blkio   这???个???子???系???统???为???块???设???备???设???定???输???入???/输???出???限???制???,比???如???物???理???设???备???(磁???盘???,固???态???硬???盘???,USB 等???等???)。
cpu     这???个???子???系???统???使???用???调???度???程???序???提???供???对??? CPU 的??? cgroup 任???务???访???问???。???
cpuacct  这???个???子???系???统???自???动???生???成??? cgroup 中???任???务???所???使???用???的??? CPU 报???告???。???
cpuset   这???个???子???系???统???为??? cgroup 中???的???任???务???分???配???独???立??? CPU(在???多???核???系???统???)和???内???存???节???点???。???
devices  这???个???子???系???统???可???允???许???或???者???拒???绝??? cgroup 中???的???任???务???访???问???设???备???。???
freezer  这???个???子???系???统???挂???起???或???者???恢???复??? cgroup 中???的???任???务???。???
memory   这???个???子???系???统???设???定??? cgroup 中???任???务???使???用???的???内???存???限???制???,并???自???动???生???成?????内???存???资???源使用???报???告???。???
net_cls  这???个???子???系???统???使???用???等???级???识???别???符???(classid)标???记???网???络???数???据???包???,可???允???许??? Linux 流???量???控???制???程???序???(tc)识???别???从???具???体??? cgroup 中???生???成???的???数???据???包???。???
net_prio  这个子系统用来设计网络流量的优先级
hugetlb  这个子系统主要针对于HugeTLB系统进行限制,这是一个大页文件系统。

Docker 容器使用 Linux cgroup 限制容器使用基础资源。

Docker 启动一个容器后,会在 /sys/fs/cgroup 目录下的各个资源目录下生成以容器 ID 为名字的目录;

 

以上是关于Docker 容器的隔离性的主要内容,如果未能解决你的问题,请参考以下文章

理解Docker :Docker 网络

理解Docker:Docker 存储 - AUFS

理解Docker:Docker 网络

理解Docker:Docker 存储之卷(Volume)

理解Docker:若干企业生产环境中的容器网络方案

Docker五大优势:持续集成版本控制可移植性隔离性和安全性