概述

Docker 的构想是要实现 “Build, Ship and Run Any App, Anywhere”,即通过对应用的封装(Packaging)分发(Distribution)部署(Deployment)运行(Runtime)生命周期进行管理,达到应用组件级别的 “一次封装,到处运行”。这里的应用组件,既可以是一个 Web 应用、一个编译环境,也可以是一套数据库平台服务,甚至是一个操作系统或集群。

可以将 Docker 容器理解为一种轻量级的沙盒(sandbox)。每个容器内运行着一个应用,不同的容器相互隔离,容器之间也可以通过网络互相通信。容器的创建和停止十分快速,几乎跟创建和终止原生应用一致;另外,容器自身对系统资源的额外需求也十分有限,远远低于传统虚拟机。很多时候,甚至直接把容器当作应用本身也没有任何问题。

在开发和运维过程中,Docker 具有如下几个方面的优势:

  • 更快速的交付和部署。使用 Docker,开发人员可以使用镜像来快速构建一套标准的开发环境;开发完成之后,测试和运维人员可以直接使用完全相同的环境来部署代码。只要是开发测试过的代码,就可以确保在生产环境无缝运行。Docker 可以快速创建和删除容器,实现快速迭代,节约开发、测试、部署的大量时间。并且,整个过程全程可见,使团队更容易理解应用的创建和工作过程。

  • 更高效的资源利用。运行 Docker 容器不需要额外的虚拟化管理程序(Virtual Machine Manager, VMM,以及 Hypervisor)的支持,Docker 是内核级的虚拟化,可以实现更高的性能,同时对资源的额外需求很低。与传统虚拟机方式相比,Docker 的性能要提高 1~2 个数量级。

  • 更轻松的迁移和扩展。Docker 容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等,同时支持主流的操作系统发行版本。这种兼容性让用户可以在不同平台之间轻松地迁移应用。

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

Last updated