目标
- Docker基础知识与应用
- 向您展示如何在整个开发过程中使用Docker
- 使用Buddy与Docker阐释应用程序自动化部署过程
提醒
本指南内容需要基本的Git知识。如果您没有版本控制系统的经验,您可以在此处上手Git
本指南使用的应用操作:
为什么要使用Docker?
作为开发人员,您应该知道,在计算机上运行应用程序之前,您需要先配置其环境。执行此操作所需的任务列表可能很长,包括如下:
- 安装数据库 版本 xx.xxx
- 安装文件 服务器版本 yy.yyy
- 安装软件包 版本 xy.zzz
诸如此类...
环境管理繁琐且成本高昂
环境中的每个更改(例如数据库版本更改)、新添软件包或任何其他依赖项都意味着:
- 每个开发人员都必须将这一特定更改引入他的机器
- 发布后,必须将所有更改引入生产服务器
如果没有适当的工具,很难跟踪依赖项。而且,无论是否使用,与配置相关的问题往往会意外出现,并且难以调试和修复。这就是为什么多年来我们测试了各种排除方法。
当前工具可能缓慢且复杂
我们使用虚拟机和配置管理工具,如Vagrant、Ansible或Puppet。然而,虚拟机非常耗费资源,并且启动和停止所需的时间非常长,以至于减慢了工作进度。处理配置管理工具也非常耗时,并且需要专业知识。
Docker解决方案
Docker如何帮助您处理上述问题? 让我们从Docker本身的定义开始并从实践中证明。
信息
Docker容器将一个软件包装在一个完整的文件系统中,其中包含运行所需的一切:代码、运行时、系统工具、系统库 —— 任何可以安装在服务器上的东西。无论其环境如何都能保证软件将始终以相同的方式运行。
明确思路:
- Docker是一个等同于虚拟机但更快且消耗更少资源。
- 只需几分钟时间,您就可以使用任何操作系统在任何服务器上运行Docker。
听起来,Docker是不是很不错,要不要试试? 接下来我们来看看使用它有多么容易。
开发进程中的Docker
假设我们刚刚聘请您作为负责我们网站的开发人员。要开始工作,您需要访问至:
- 项目应用源码 – 应该已经存在于存储仓中,如果没有,您首先要做的应该是把源码放置于版本控制系统中。
- 文档 – 它将告诉您应该在计算机上安装哪些组件以及如何配置以便在本地运行应用程序。在实践中应该这样做,但十有八九根本就没有什么文档供您现用。
在使用Docker时,我们消除了处理配置时最棘手的问题:
- 确定需要安装哪些组件
- 为每个组件选择正确的版本
- 正确配置组件以便在本地运行应用程序
让我们来看一个简单的例子,证明Docker是如何处理。