Docker 有哪些优点?
前面的小节我们学习了一些前置知识和 Docker 的基本原理,那么,你可能会问了:Docker 到底有哪些优点呢?我们为什么要学习 Docker 呢?别着急,这节课我们就来细数下 Docker 的优点:
1. 更好的安全性
如果服务器上启动了多个服务,这些服务可能会相互影响的,每一个服务都能看到其他服务的进程,也可以访问宿主机器上的任意文件,这种情况下,一旦服务器上的某一个服务被入侵,那么入侵者就可能访问到当前机器上所有的服务和文件,使用 Docker 则可以有效避免这种问题的发生。
2. 更高效地利用系统资源
由于容器不需要进行硬件虚拟化以及运行完整操作系统等额外开销,Docker 对系统资源的利用率更高。无论是应用执行速度、内存损耗以及文件存储速度,都要比传统虚拟机技术更高效。
3. 更快的启动时间
传统的虚拟机技术启动应用服务往往需要数分钟, Docker 容器由于直接运行于宿主内核,无需启动完整的操作系统,因此可以超快启动容器应用。节约了开发、测试和部署的时间。
4. 一致的运行环境
开发过程中有一个令人头疼的问题是环境一致性问题。由于开发环境、测试环境、生产环境不一致,导致有些 Bug 并未在开发过程中被发现。而 Docker 的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性。
5. 持续交付和部署
使用 Docker可以通过定制应用镜像来实现持续集成、持续交付、部署。开发者可以通过 Dockerfile 来进行镜像构建,并结合持续集成系统进行集成测试,运维则可以直接在生产环境中快速部署该镜像,结合持续部署系统进行自动部署。
6. 更轻松地迁移
由于 Docker 确保了执行环境的一致性,使得应用的迁移更加容易。Docker可以在很多平台上运行,无论是物理机、虚拟机、公有云、私有云,其运行结果是一致的。用户可以很轻易地将应用迁移到另一个平台上,不用担心运行环境的变化。
7. 更轻松地维护和扩展
Docker 使用的分层存储以及镜像的技术,使得应用重复部分的复用更为容易,也使得应用的维护更新更加简单,基于基础镜像进一步扩展镜像也变得非常简单。Docker团队同各个开源项目团队一起维护了一大批高质量的官方镜像,既可以直接在生产环境使用,又可以作为基础进一步定制,大大的降低了应用服务的镜像制作成本。
8. 对比传统虚拟机
特性 | 容器 | 虚拟机 |
---|---|---|
启动 | 秒级 | 分钟级 |
硬盘使用 | MB 级 |
GB 级 |
性能 | 接近原生 | 弱于原生 |
9. 小结
Docker 比 传统的物理机、虚拟机和传统的 PaaS 服务都更具优势,我们选择 Docker 的目的其实很简单,就是利用它的功能和生态带来的提升我们的工作效率。