举个简单的应用场景的例子。 假设用户试图基于最常见的LAMP ( Linux + Apache + MySQL + P旧)组合来运维一个网站。 按照传统的做法, 首先, 需要安装Apache、 MySQL 和PHP以及它们各自运行所依赖的环境;之后分别对它们进行配置(包括创建合适的用户、配置参数等);经过大量的操作后, 还需要进行功能测试, 看是否工作正常;如果不正常, 则意味着更多的时间代价和不可控的风险。 可以想象, 如果再加上更多的应用, 事情会变得更加难以处理。
更为可怕的是, 一旦需要服务器迁移(例如从阿里云迁移到腾讯云), 往往需要重新部署和调试。 这些琐碎而无趣的 “体力活“,极大地降低了工作效率。
而Docker提供了一种更为聪明的方式, 通过容器来打包应用, 意味着迁移只需要在新的服务器上启动需要的容器就可以了。 这无疑将节约大量的宝贵时间, 并降低部署过程出现问题的风险。
Docker在开发和运维中的优势
对开发和运维(DevOps)人员来说, 可能最梦寐以求的就是一次性地创建或配置, 可以在任意环境、 任意时间让应用正常地运行 。 而Docker恰恰是可以实现这一终极目标的瑞士军刀。
具体说来, Docker在开发和运维 过程中 , 具有如下几个方面的优势。
Docker 与虚拟机比较
作为一种轻量级的虚拟化方式, Docker在运行应用上跟传统的虚拟机方式相比具有显著优势:
下表总结了使用Docker容器技术与传统虚拟机 技术的特性比较。
虚拟化与Docker下面图比较了Docker和常见的虚拟机方式的不同之处。
传统方式是在硬件层面实现虚拟化, 需要有额外的虚拟机管理应用和虚拟机操作系统层。
Docker容器是在操作系统层面上实现虚拟化, 直接复用本地主机的操作系统, 因此更加轻量级。