什么是Docker?

Docker是一个开源的应用容器引擎,它基于go语言开发,并遵从Apache2.0开源协议。使用Docker可以让开发者封装他们的应用以及依赖包到一个可移植的容器中,然后发布到任意的 Linux 机器上,也可以实现虚拟化。Docker 容器完全使用沙箱机制,相互之间不会有任何接口,这保证了容器之间的安全性。

Docker诞生于2013年初,目前有两个版本,Community Edition(CE,社区版)和Enterprise Edition(EE,企业版)。其中Docker社区版是免费开源的,对于个人和小团队来说是比较理想的选择;Docker企业版则是收费的,是专门为企业和大型IT团队提供的,用于要求比较严格的商业应用中。


Docker的特点

在学习一项技术时,了解该技术的特点才能更好地实际运用。Docker 作为当前主流的一个开源容器引擎,其主要特点如下。

1、更快速的交付和部署

开发者可以使用一个标准的Docker镜像来构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器来部署代码。Docker 可以快速创建容器以及快速迭代应用程序,并让整个过程全程可见,使团队中的其他成员更容易理解应用程序是如何创建和工作的。Docker容器轻,且启动速度快,可以大量地节约开发、测试和部署的时间。

2、更高效的虚拟化

Docker 容器在运行时,不需要额外的虚拟机程序的支持。由于它是内核级的虚拟化,所以可以实现更高的性能和效率。

3、更轻松的迁移和扩展

Docker 容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人计算机和服务器等。这种良好的兼容性可以让用户把一个应用程序从一个平台直接迁移到另外一个平台,十分有利于应用的迁移和扩展。

4、更简单的管理

使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理。

除上述几个特点外,Docker还具有实现逻辑分离、适合与面向服务的架构配合使用等特点。


Docker与虚拟机的区别

了解了Docker的概念和特点后,相信很多人对Docker与虚拟机的区别会产生疑惑,那么它们到底有什么不同呢?下面通过一张对比图来说明两者的主要区别,如下图所示:


从上图的对比中可以看出,虚拟机是运行在每个应用层级的客户端操作系统上的,这是资源密集型的。由于产生的磁盘镜像和应用程序的操作系统设置相互交叉,所以导致虚拟机对系统的依赖性很强,一旦系统出现问题,虚拟机依赖的文件以及安全补丁等都可能会出现文件丢失的情况。

Docker中的容器是基于进程的隔离,多个容器可以共享单个内核,并且创建 Docker 容器的镜像所需要的配置并不依赖于宿主机系统。正是因为容器之间配置的隔离性,容器之间就没有配置交叉,所以Docker的应用可以运行在任何地方。
免责申明:本文转自黑马程序员JavaEE高手班 http://java.itheima.com