- Docker容器技术与应用
- 程宁 刘桂兰主编
- 1473字
- 2025-04-01 14:43:48
任务实现
1.调研Docker与传统虚拟机的区别
传统虚拟机运行在宿主机之上,具有完整的操作系统。其自身的内存管理通过相关的虚拟设备进行支持。在虚拟机中,可为用户操作系统和虚拟机管理程序分配有效的资源,从而在单台主机上并行运行一个或多个操作系统的多个实例。每个客户操作系统都作为主机系统中的单个实体运行,但会占用较多的CPU、内存及硬盘资源。传统虚拟机架构如图1-1所示。
Docker不同于传统的虚拟机,Docker容器是使用Docker引擎而不是管理程序来执行的。它只包含应用程序及依赖库,基于Libcontainer运行在宿主机上,因此容器比虚拟机小,并且由于主机内核的共享,可以更快地启动,具有更好的性能、更少的隔离和更好的兼容性。由于Docker轻量、资源占用少,使Docker可以轻易地应用到构建标准化的应用中。Docker架构如图1-2所示。

图1-1 传统虚拟机架构

图1-2 Docker架构
当然,在隔离性方面,英特尔的VT-d和VT-x技术为传统虚拟机提供了ring-1硬件隔离技术,提供的是相对封闭的隔离,它可以帮助传统虚拟机高效使用资源并防止相互干扰。而Docker利用Linux操作系统中的多种防护技术实现了严格的隔离可靠性,并且可以整合众多安全工具。从Docker 1.3.0开始,Docker重点改善了容器的安全控制和镜像的安全机制,极大地提高了使用Docker的安全性。
Docker容器技术与传统虚拟机技术的特性比较如表1-1所示。
表1-1 Docker容器技术与传统虚拟机技术的特性比较

2.调研Docker的用途
与传统虚拟机不同,Docker 提供的是轻量的虚拟化,可以在单个主机上运行多个Docker容器,而每个容器中都有一个微服务或独立应用。例如,用户可以在一个Docker容器中运行MySQL服务,在另一个Docker容器中运行Tomcat服务,两个容器可以运行在同一个服务器或多个服务器上。目前,Docker容器能够提供以下8种功能。
(1)简化配置:传统虚拟机的最大好处是基于用户的应用配置能够无缝运行在任何一个平台上,而Docker在降低额外开销的情况下提供了同样的功能。它能将运行环境和配置放入代码中进行部署,同一个Docker的配置可以在不同的环境中使用,这样就降低了硬件要求和应用环境之间的耦合度。
(2)代码管道化管理:Docker能够对代码以流式管道化进行管理。代码从开发者的机器到生产环境机器的部署,需要经过很多的中间环境,而每一个中间环境都有自己微小的差别,Docker跨越这些异构环境,给应用提供了一个从开发到上线均一致的环境,保证了应用从开发到部署的流畅发布。
(3)开发人员的生产化:在开发过程中,开发者都希望开发环境尽量贴近生产环境,并且能够快速搭建开发环境,使用Docker可以轻易地让几十个服务在容器中运行起来,可以在单机上最大限度地模拟分布式部署的环境。
(4)隔离应用:Docker允许开发人员选择最适合各种服务的工具或技术栈,隔离服务以消除任何潜在的冲突,从而避免“地狱式的矩阵依赖”。这些容器可以独立于应用的其他服务组件,轻松地实现共享、部署、更新和瞬间扩展。
(5)整合服务器:使用Docker可以整合多个服务器以降低成本。由于空闲内存可以跨实例共享,无须占用过多操作系统内存空间,因此,相比于传统虚拟机,Docker可以提供更好的服务器整合解决方案。
(6)调试能力:Docker提供了众多的工具,它们提供了很多功能,包括可以为容器设置检查点、设置版本、查看两个容器之间的差别等,这些特性可以帮助调试缺陷。
(7)多租户环境:Docker能够作为云计算的多租户容器,为每一个租户的应用层的多个实例创建隔离的环境,不仅简单,而且成本低廉。这得益于Docker灵活的快速环境及高效的diff命令。
(8)快速部署:Docker为进程创建了一个容器,不需要启动操作系统,启动时间缩短为秒级,用户可以在数据中心创建、销毁资源而无须担心重新启动带来的开销。通常,数据中心的资源利用率只有30%,这样可以使用Docker进行有效的资源分配,并提高资源的利用率。