Docker OS container
Docker是一种轻量级的虚拟化解决方案,不同的container共享同一个HOST OS,利用的是Linux的namespace和cgroup技术;namespace为不同的container提供隔离环境,cgroup为不同的container提供资源划分。这与VM的虚拟化方案不同,VM的虚拟化方案直接在Guest运行一个完整的OS,每个VM都有自己的kernel;
既然不同的container共享同一个HOST OS,那为什么还存在OS的image呢?如果用docker去启动一个OS的image,那这时候Guest运行的是否是一个完整的OS呢?
如下图所示,在一个Linux HOST上运行三个OS image(Ubuntu 、REHL 7、Centros),那这三个container里运行的是一个完整的OS吗?
答案显示不是。
不同的Linxu发行版本,主要的差异在于不同的用户态软件包。因此Docker通过在运行一个OS的image就可以为我们模拟出一个不同的用户态运行环境,
比如在 ubuntu的HOST上安装一个Centros的容器,那我们就可以获得contros的用户态运行环境,所以可以把docker看成是一种提供更加高级的chroot环境的工具。