Docker的功能实现的几个系统支持
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
程序在Docker上运行示意图:
- chroot & pivot_root
限制容器中进程的活动范围,不能让容器中的进程去访问真实的系统目录,将他们的活动范围划定到一个指定的区域;
- namespace
把真实系统所在的世界隐藏起来,别让容器中的进程看到,比如进程列表、网络设备、用户列表这些,是决不能让容器中的进程知道的,得让他们看到的世界是一个干净如新的系统;
- CGroup
通过它可以划定一个个的分组,然后限制每个分组能够使用的资源,比如内存的上限值、CPU的使用率、硬盘空间总量等等,系统内核会自动检查和限制这些分组中的进程资源使用量;
我是一个小小的搬运工,让米粒变成仓廪