最初起源:chroot
通俗的来讲,chroot就是可以将任何目录改为当前进程的根目录,使得该进程不能访问当前进程根目录之外的其他目录。
Docker利用LINUX三大机制实现,Namespace、Cgroup、联合文件系统
Namespace
Namespace对内核资源进行隔离,使得容器中的进程都可以在单独的命名空间中运行并且只可以访问当前容器命名空间的资源。
Namespace 可以隔离进程ID、主机名、用户ID、文件名、网络访问和进程间通信等相关资源
Docker用到以下5种命名空间
-
mnt namespace ,文件系统挂载点隔离
-
net namesapce ,网络接口隔离
-
pid namespace ,进程id隔离
-
ipc namespace,信号量、消息队列和共享内存隔离
-
uts namesapce,主机名和域名的隔离
Cgroup
一种Linux内核功能,可以限制和隔离进程的资源使用情况(CPU、内存、磁盘I/O、网络等)
联合文件系统
又叫UnionFS,是一种通过创建文件层进程操作的文件系统。常用的联合文件系统:AUFS、Overlay和Devicemapper。
联合文件系统非常轻快,Docker通过联合文件系统为容器提供构建层,使得容器可以实现写时复制以及镜像的分层构建和存储。
结语
Docker提供了工具和平台来管理容器的生命周期
1. 使用容器开发应用程序及其支持组件。
2. 容器成为分发和测试应用程序的单元。
3. 准备就绪后,可以将应用程序作为容器或协调服务器部署到生产环境中。
后言
Docker 爆发的原因是加入了镜像功能,并且封装了镜像仓库使得镜像分发更加方便