图片.png
## 左图
Hypervisor 的软件:通过硬件虚拟化功能,模拟出了运行一个操作系统需要的各种硬件,比如 CPU、内存、I/O 设备等等.在虚拟的硬件上安装了一个新的操作系统
## 右图
Docker Engine 的软件替换了 Hypervisor:把虚拟机的概念套在了容器上
与虚拟机不同,使用Docker并没有一个真正的“Docker容器”运行在宿主机里面。
Docker 项目帮助用户启动的,还是原来的应用进程,只不过在创建这些进程时,Docker 为它们加上了各种各样的 Namespace参数。
这些进程就会觉得自己是各自 PID Namespace 里的第 1 号进程,只能看到各自 Mount Namespace 里挂载的目录和文件,只能访问到各自 Network Namespace 里的网络设备,就仿佛运行在一个个“容器”里面,与世隔绝。
其实不应该把 Docker Engine 或者任何容器管理工具放在跟 Hypervisor 相同的位置,不像 Hypervisor 那样对应用进程的隔离环境负责,也不会创建任何实体的“容器”,真正对隔离环境负责的是宿主机操作系统本身
网友评论