docker资源隔离
1.2 什么是Linux的容器(LXC--LinuX Container)?
1.2.1 主机虚拟化与容器的区别
![](http://upload-images.jianshu.io/upload_images/16956686-3a1e7976b0cdbe91.png?imageMogr2/auto-orient/strip|imageView2/2/w/1166/format/webp)
image.png
1.2.2 容器发展之路
容器技术最早出现在FreeBSD上叫做 jail,将一个进程放入jail中运行,不管这个进程在其中发生怎样的错误都不会影响到系统上其他进程的运行。
后来,jail技术在Linux中的实现叫做vserver,vserver所实现的功能体现为chroot以及namespaces实现资源的隔离。
容器技术出现的主要目的是为了"资源隔离"
![](http://upload-images.jianshu.io/upload_images/16956686-a25a9bb9e737635e.png?imageMogr2/auto-orient/strip|imageView2/2/w/838/format/webp)
image.png
![](http://upload-images.jianshu.io/upload_images/16956686-d5107aba60e57c62.png?imageMogr2/auto-orient/strip|imageView2/2/w/865/format/webp)
image.png
Linux在内核中通过namespaces,原生支持6种资源隔离,并且直接通过系统调用对外进行输出。
另外,仅靠namespaces,就可以完成容器的功能吗?
对,我们还需要靠CCgroups 控制每个namespace中的资源分配。
![](http://upload-images.jianshu.io/upload_images/16956686-79aeb12389ede7e2.png?imageMogr2/auto-orient/strip|imageView2/2/w/278/format/webp)
image.png
![](http://upload-images.jianshu.io/upload_images/16956686-0104f7046e503dec.png?imageMogr2/auto-orient/strip|imageView2/2/w/1200/format/webp)
image.png
1.2.4 LXC到Docker的历史
LXC,将原来需要手工编码实现的容器技术,进行了封装。实现了,更加方便、快速的容器创建及管理的技术。通过固有“模板”,安装并启动容器。将远程的程序包下载到本地,安装并创建好我们需要的容器。
确实,LXC已经很大程度上降低了容器管理的难度,但是依然使用一些弊端。有些时候可能需要自定制模板,以及使用LXC中自带的模板,以及大规模创建及复制依然比较麻烦。所以,很难大规模的应用。
所以,出现了Docker技术。Docker是在LXC基础上,使用GoLang二次开发的封装版。
链接:https://www.jianshu.com/p/9c3f3b38afea