Docker与虚拟化
虚拟化
虚拟化的核心是对资源的抽象,目标往往是为了在同一个主机上同时运行多个系统或应用,从而提高系统资源的利用率,并且带来降低成本、方便管理和容错容灾等好处。
Docker
Docker 并不是一种完全的虚拟化技术,而更是一种轻量级的隔离技术(操作系统虚拟化)。
基于 namespace,Docker 为每个容器提供了单独的命名空间,对网络、PID、用户、IPC 通信、文件系统挂载点等实现了隔离。对于 CPU、内存、磁盘 IO 等计算资源,则是通过 CGroup 进行管理。
Docker的特点
1.使应用脱离了底层物理硬件的限制,将应用与运行平台解耦。
2.创建方式可以是任何时间任何地点,从而实现快速分发和部署。
3.一次构建,到处运行。
为什么要使用Docker?
更快速的交付和部署
使用Docker,开发人员可以使用镜像来快速构建一套标准的开发环境;开发完成之后,测试和运维人员可以直接使用完全相同的环境来部署代码。只要是开发测试过的代码,就可以确保在生产环境无缝运行。Docker可以快速创建和删除容器,实现快速迭代,节约开发、测试、部署的大量时间。并且,整个过程全程可见,使团队更容易理解应用的创建和工作过程.
更高效的资源利用
运行Docker容器不需要额外的虚拟化管理程序(Virtual Machine Manager, VMM,以及Hypervisor)的支持,Docker是内核级的虚拟化,可以实现更高的性能,同时对资源的额外需求很低。与传统虚拟机方式相比,Docker的性能要提高1~2个数量级。
更轻松的迁移和扩展
Docker容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等,同时支持主流的操作系统发行版本。这种兼容性让用户可以在不同平台之间轻松地迁移应用。
更简单的更新管理
使用Dockerfile,只需要小小的配置修改,就可以替代以往大量的更新工作。所有修改都以增量的方式被分发和更新,从而实现自
Docker VS VM
更快的速度
启动和停止可以在秒级实现,这相比传统的虚拟机方式(数分钟)要快得多;
更少的资源占用
一台主机上可以同时运行数千个Docker容器(在IBM服务器上已经实现了同时运行10K量级的容器实例;
类Git管理
Docker通过类似Git设计理念的操作来方便用户获取、分发和更新应用镜像,存储复用,增量更新;
更灵活的自动化创建和部署机制
Docker通过Dockerfile支持灵活的自动化创建和部署机制,以提高工作效率,并标准化流程。