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 的目的其实很简单,就是利用它的功能和生态带来的提升我们的工作效率。