Docker容器技术与运维
上QQ阅读APP看书,第一时间看更新

1.1.3 容器与虚拟机

容器在Linux主机上本地运行,并与其他容器共享主机的操作系统内核。容器运行一个独立的进程,不会比其他可执行文件占用更多的内存,这就使它具备轻量化的优点。

相比之下,每个虚拟机(Virtual Machine,VM)运行一个完整的客户端(Guest)操作系统,并通过虚拟机管理程序(Hypervisor)以虚拟方式访问主机资源。总的来说,虚拟机提供的环境所包含的资源超出了大多数应用程序的实际需要。

容器之间共享主机的操作系统,容器引擎将容器当作进程在主机上运行,其内核使用的是主机操作系统的内核,因此依赖于主机操作系统的内核版本。虚拟机有自己的操作系统,且独立于主机操作系统,其操作系统内核可以和主机不同。

容器在主机操作系统的用户空间内运行,并且与其他操作系统进程相互隔离,启动时也不需要启动操作系统的内核空间。因此,与虚拟机相比,容器启动快,开销少,而且迁移便捷。

当然,也可以在虚拟机上运行Docker容器,这时该虚拟机本身就充当一台Docker主机。

容器与虚拟机的对比如图1-1所示。

图1-1 Docker容器与虚拟机对比

Docker可用于将应用程序打包,并部署在被称为容器的松散的隔离环境中运行。这种隔离和安全机制使得在同一台主机上可以同时运行多个容器。