隔离
Namespace:在Linux容器中用来实现“隔离”的技术手段,它实际上修改了应用进程看待整个计算机“视图”,即它的“视线”被操作系统做了限制,只能“看到”某些指定的内容。 但对于宿主机来说,这些被“隔离”了的进程跟其他进程并没有太大区别,都由宿主机操作系统统一管理,只不过这些被隔离的进程拥有额外设置过的Namespace参数。而Docker项目在这里扮演的角色,更多的是旁路式的辅助和管理工作。
虚拟机技术的实现,它里面必须运行一个完整的Guest OS 才能执行用户的应用进程,这就不可避免地带来了额外的资源消耗和占用。相比之下,容器化的用户应用,却是宿主机上的普通进程,不会带来虚拟化带来的性能损耗;另外,使用Namespace作为隔离手段的容器并不需要单独的Guest OS, 这使得容器额外的资源占用几乎可以忽略不计。
“敏捷” 和“高性能”是容器相较于虚拟机最大的优势,也是它能够在PaaS这种更细粒度的资源管理平台上大行其道的重要原因。
但这也为容器技术带来了不足之处,基于Linux Namespace的隔离机制相比于虚拟化,最主要的问题就是:隔离得不彻底。
首先,既然容器只是运行在宿主机上的一种特殊的进程,那么多个容器之间使用的还是同一个宿主机的操作系统内核。
其次,在Linux内核中,有很多资源和对象是不能被Namespace化的,最典型的例子就是:时间。
限制