时间:2024-04-25
段嘉腾
摘 要:在互联网发展的过程中,云计算得到了飞速的发展,并在开放协作、移动商务、搜索服务中得到了应用。Docker是一种轻量级的虚拟化方式,在软件开发中应用Docker技术能够使PaaS平台的部署和运行更加高效。本文对Docker技术进行了简要的介绍,并探讨了Docker技术在软件开发过程中的具体应用,供相关人员参考借鉴。
关键词:Docker技术;软件开发;应用
中图分类号: F224-39 文献标识码: A 文章编号: 1673-1069(2016)26-152-2
0 引言
通过云计算,用户能够对应用程序进行高效的部署和开发,然后使用基于PaaS的云基础设施来托管应用程序,这样可以使运行和维护成本得到降低,开发周期还能够得到进一步的缩短。作为一种轻量级的PaaS,虚拟化是Docker技术的核心技术。
1 Docker技术
当前具有两种虚拟化类型,也就是以软件为基础的虚拟化和以硬件为基础的虚拟化。以软件为基础的虚拟化又可以分为两个类别:平台虚拟化和应用虚拟化,应用虚拟化包括操作系统及虚拟化、超虚拟化、部分虚拟化、硬件辅助虚拟化、完全虚拟化。本文探讨的虚拟机技术是平台虚拟化的一种,而Docker技术是一种操作系统的虚拟化。
1.1 Docker技术的含义
2013年Docker正式发布,属于一种PaaS项目。Docker属于高级容器引擎,以go语言为基础,由PaaS提供商提供,须遵从Apache2.0协议,当前已经形成了Docker生态圈。当前对Docker进行集成支持的有阿里巴巴、百度、IBM、google、Redhat等。Docker技术希望能够对应用组件进行生命周期管理,包括运行、部署、分发、封装等,从而实现一次封装、随处运行,常见的应用组件主要有编译器、操作系统、数据库服务、Web应用等。
1.2 Docker技术的关键要素
Docker技术包括以下几个关键要素:Registry(仓库)、Container(容器)、Image(镜像),其中最重要的要素是镜像。镜像中具有文件系统,要构建容器就必须以镜像为基础。镜像是一种只读模板,能够将一个完整的操作系统和其应用软件包含其中。用户能够对他人创建的镜像进行下载,也可以以自己的需求为依据自行创作镜像。镜像中的创建实例就是容器,也就是处于启动或执行阶段的是容器,构建或打包阶段的是镜像。用户创建的镜像可以放在仓库中进行保存。
当前主要有两种镜像来源:
第一种是Docker自有镜像,也就是公用镜像;
第二种是用户定制镜像,也就是私有镜像。
1.3 Docker虚拟化技术的技术优势
当前的Docker虚拟化技术主要有以下几个技术优势:
①迭代策略更加快捷、简单,运用Dockersfile能够更加快捷地在生产环境中反馈开发环境中的配置更新,使自动化管理更加高效。
②使物理资源的利用率得到提高。Docker容器只需占据非常小的存储空间,而且只需删除容器就可以将其他的相关文件一并删除,从而使物理资源的利用率得到了有效的提高。
③使部署周期和环境交付周期缩短,开发人员可以运用Docker技术来进行镜像部署,进行软件开发。在完成开发之后可以直接向运维和测试人员进行平滑移交。而且可以非常便利地对容器进行维护,从而使部署、测试和开发的时间得到缩短,实现快速迭代的目的。
④提高工作效率,对服务器迁移造成的环境再部署进行简化,并且使部署风险系数得到控制。
1.4 Docker的体系架构
远程控制器是Docker的客户端,DockerHost会收到通过TCP/REST传送来的请求,常见的请求包括删除容器、保存容器、运行容器、创建容器等。Daemon处于Docker的服务端,可以根据客户端的请求对其进行管理。然后运用driver把请求转发到位于容器中的libcontainer执行环境。与各种Linux内核隔离的接口主要由libcontainer提供,与控制组和类似。在这种架构中,多个容器能够对一个Linux内核进行共享,而这些容器的运行又相互隔离。要实现Docker的轻量级要求,就不能在Docker容器中配置专用操作系统。Docker技术的体系架构具体见图1。
2 在软件开发中应用Docker技术
在很多情况下,在对开发环境进行搭建是程序员总是会遇到各种问题,例如软件安装不便、具有较差的可移植性和隔离性等,这就需要在本地搭建虚拟机来解决这一系列的问题。然而搭建虚拟机非常麻烦,并非最佳的解决方案。此时程序员可以选择Docker作为一种轻量级的方案,Docker不仅具有所有的虚拟机功能,还具有一些虚拟机不具备的功能,例如可以使用Docker使多容器同时运行,而且与传统的虚拟机相比,Docker对CPU、磁盘、内存的消耗较低。
2.1 在开发环境搭建中应用Docker
程序员在搭建开发环境时可以应用Docker技术,为了使开发环境具有良好的扩展性,同时对磁盘空间进行节约,先要将基础的Image搭建起来,然后在此基础上对这个基础的Image进行扩展,实现不同的开发环境。
为了能够在,host的主机中便利地进行代码编辑,程序员有时候还需要在Container中映射host 主机(宿主)上的目录。此时,程序员无需将这些目录手动复制到Container上,并Container进行重启。而是可以直接在Container中对其进行运行和编辑。
2.2 Docker技术的应用架构
在软件开发的过程中总是需要考虑到很多问题,为了保障产品能够成功发布,开发者总是要对各种App、中间件和OS进行考虑,这个过程具有一定的管理难度,这也是软件行业中普遍存在的一个问题。在很多应用实例中都可以使用Docker来进行简化部署,例如大数据应用、数据库应用、后台应用、Web 应用等。可以应用Docker技术将消息列队Hadoop 集群打包起来,使其成为一个简单的Image 部署。
总体而言运用Docker技术来对一个应用进行部署并不复杂,可以在相同的image上配备不同的运行时数据和软件,具体情况见图2。
在应用的过程中,Docker技术会自动搭配各种网络、存储,对应用进行下载和安装,然后再对参数进行配置,将其打包后向Image上传。程序员可以根据需求选择自动创建或手动创建的方式来创建Container。如果DockerFile 文件已经存在于源码库中,通过自动创建的容器中就已经具有了应用以及所有的应用依赖项。程序员可以在私有Docker或者公有Docker中运用DockerSearch 命令对Containers进行搜索,同时程序员还可以选择在注册表里使用DockerPull 命令对Containers进行推送。停止、运行、启动等操作都可以通过DockerRun 命令来实现。
3 结语
Docker技术以及特有的技术优势迅速的发展和广泛的应用,近年来大量的开源项目和创业公司都与Docker技术有着密切的联系,Amazon、Microsoft、红帽、Rackspace、google、IBM也也对容器技术上加磅予以了支持,而且Docker技术已经得到了虚拟化巨头 Vmware的认可与支持。当前默认使用的Docker主要是AUFS、LXC,但并不对这二者进行强制绑定。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!