< em >以应用程序为中心的。Docker针对应用程序的部署进行了优化,而不是针对机器。这反映在它的API、用户界面、设计理念和文档中。相比之下,lxc helper脚本将容器视为轻量级机器——基本上是启动速度更快、内存需求更少的服务器。我们认为容器的意义远不止这些。
< em >自动构建< / em >。Docker提供了一个工具,开发者可以从源代码中自动组装容器,完全控制应用依赖关系、构建工具、打包等。他们可以自由使用make, maven, chef, puppet, salt, debian包,rpm,源tarball,或以上任何组合,,而不管机器的配置。
< em >版本控制。Docker包含类似git的功能,用于跟踪容器的连续版本,检查版本之间的差异,提交新版本,回滚等。历史还包括如何容器是由谁组装的,因此您可以从生产服务器一直追溯到上游开发人员。Docker还实现了增量上传和下载,类似于“git pull”,所以一个容器的新版本可以通过发送diff来传输。
< em >组件重用。任何容器都可以作为“基本映像”来创建更专门的组件。这可以手动完成,也可以作为自动构建的一部分。例如,您可以准备一个理想的python环境,并将其用作10个不同应用程序的基础。您理想的postgresql设置可以在您未来的所有项目中重用。等等。
< em >共享。 Docker可以访问公共注册表(https://registry.hub.docker.com/),在那里成千上万的人上传了有用的容器:从redis, couchdb, postgres到irc bouncers到rails应用服务器到hadoop到各种发行版的基本映像。注册表还包括由docker团队维护的有用容器的官方“标准库”。注册表本身是开源的,因此任何人都可以部署自己的注册表来存储和传输私有容器,例如用于内部服务器部署。