分享
计算机软件开发中Docker技术应用分析.pdf
下载文档

ID:2640576

大小:1.63MB

页数:3页

格式:PDF

时间:2023-08-20

收藏 分享赚钱
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
计算机软件 开发 Docker 技术 应用 分析
工 程 技 术INDUSTRIAL INNOVATION 产业创新研究145作者简介:1.张荻,男,河南濮阳人,硕士研究生,工程师;研究方向:信息技术、软件工程;2.孙蓉,女,湖北荆门人,硕士研究生,工程师;研究方向:信息技术。计算机软件开发中 Docker 技术应用分析张 荻 孙 蓉(国网湖北省电力有限公司技术培训中心(武汉电力职业技术学院),湖北武汉 430079)摘要:随着科学技术的发展,“云计算”俨然成为引领时代的新型商业计算方式。在电子商务中,开放协作与搜索服务得到了快速发展,而这些与 Docker 技术及其在软件开发上的运用密不可分。文章从解读 Docker技术内涵出发,对 Docker 技术和传统计算机软件之间的差异和优点进行分析,讨论 Docker 技术体系架构,对计算机软件开发过程中 Docker 技术的运用进行研究。一是在开发环境搭建上对 Docker 的运用,另一种是将Docker 技术运用于搭建软件开发/测试环境。关键词:计算机软件;开发;Docker在互联网信息技术飞速发展的今天,云计算在移动商务中也以新的商业计算模式出现,搜索服务与开放协作等迅速发展。这些技术都极大地方便了广大用户进行研发、应用部署等,各类应用在 PaaS 管理端的托管既缩短了研发时间,又降低了实际的运维成本。PaaS 管理与虚拟化技术支持之间存在着密切的联系,而 Docker 是一种与之匹配的虚拟化容器引擎,它应用了容器型技术,带领云计算软件开发行业走向了崭新的时代,即 web3.0 时代。因此,加强 Docker 技术的有效应用,对计算机软件开发有着积极影响。一、Docker 技术概述云开源项目是 Docker 的基础,以 Go 语言为前提,在Linux容器中应用 LXC 虚拟化技术的新一代引擎,所以在Docker 容器应用中,有着比较好的体验效果,可提高用户的工作效率与敏捷性,属于最佳的轻量级容器方案。而且该技术还能实现各种主流云平台以及本地系统的部署工作,通过Docker 技术能够完成“一站式”方案的合理开发。Docker 技术的适应性较强,适用于多种不同的运行环境,绝大部分的应用程序都能在该技术下实现运行,并实现标准化封装,使其成为镜像/容器,便于在不同的平台内部署、运行、分发程序等,提高了应用组件一次封装的效率1。(一)Linux 容器Linux 容器(LXC)是一个轻量级的内核实现,有利于对资源与进程进行隔离,同时无需提供指令解释机制,多个应用软件系统被装配到软件容器(Container)中,这里面有应用软件本身的代码,并含有要求的操作系统核心及库文件。通过统一命名空间,共享 API,为不同软件容器配置可用硬件资源,为应用程序创建了一个独立的沙箱运行环境,使Linux 用户能够方便地建立并管理系统或者应用容器。(二)Docker 文件Docker 用 dockerfiles 来管理和控制容器,它提供了一个简单的脚本(类似于 makefile)。用户只要对 Shell 脚本及Linux 软件环境有一个基本的熟悉就可以了(Windows 平台和Mac 平行提供 toolbox)。Dockerfile 文件的 built 过程,依赖不同客户端器,不管客户端使用哪种系统,同一个 dockerfile 规定所产生的同一个容器是可以被生成,确保环境一致2。(三)融入当地的开发环境尽管它为云计算平台的建设提供了很多的优势资源,例如可扩展性强,密集型的计算任务,但是许多开发人员倾向于在本地环境下安装开发工具及测试程序。该方法降低了成本,并且能够降低由于网络延迟而引起的许多不确定性。二、虚拟机技术和容器方案的比较传统虚拟化方案大多使用虚拟机技术。虚拟机技术使用系统管理程序,使多个客户操作系统能够共同操作一个虚拟机。每一个客户的操作系统都与计算无关,存储于网络组件。虚拟机管理程序自身可在裸机上或操作系统(KVM)的部分上运行。容器技术基于 OpenVZ、SolarisZones 和 LXC 这三种为典型代表,采用上述技术方案,容器能够与使用者完美地结合为一体。Docker 是以 LXC 为基础,具备了现代 Linux 容器所具备的诸如,控制组技术与命名空间,使容器隔离性强,工 程 技 术产业创新研究 2023.6 第12 期146每一个容器都有其网络与存储栈,让多个容器并存于同一主机中。三、平台就是服务平台就是服务(PaaS),注重提升开发人员开发和生产效率,而且不需要开发人员对网络进行管理、存储、计算等。主要有以下几个特点:该平台提供应用程序开发,和运行环境一致,使程序编写人员不必租赁硬件设备,选购软件环境。并且不用考虑繁琐的应用程序部署过程。该平台确保应用程序运行和维护,程序编写人员可通过该平台了解应用程序运行情况;系统管理人员能够获取访问统计信息,充分了解用户使用该应用程序的状况。该平台为应用及资源提供高度可扩展性。程序编写人员不必注意底层硬件资源大小及处理器处理能力,该平台具备负载均衡功能。四、对 Docker 容器的安全风险进行了分析(一)内核的安全风险宿主机与 Docker 容器使用同样的操作系统,如果在操作系统中出现了提权漏洞或者横向越权,容器一侵入,攻击者便可钻此空子提权,向宿主机逃逸,继而危及整台宿主机,以及其他的全部容器。在同一操作系统内,宿主机 root 权限可以分享给 Docker 容器,如果容器 root 权限未被限制或者禁止,在容器内的 root 用户,还会对整台宿主机具有 root 权限,然后可对整个宿主机和上面的全部容器进行控制。(二)主机的安全风险在 Docker1.10 版 本 以 前,在 Daemon 容 器 的 创 建 中Docker 服务端通常采取较多的特权操作,具体包括配置网络与挂载文件系统等,且上述动作都要通过 root 用户来发起。在此背景下,当 Daemon 遭受外来攻击时,宿主机也会跟着一并沦陷。在 DockerDaemon 的运行过程中,解析 Dockerfile文件或者镜像时,如果这些输入数据没有经过验证与筛选,会造成严重的安全问题。在行业中曾经有这样的情况,攻击者会通过构建专门的 Dockerfile 压缩文件完成攻击,导致在编译活动中漏洞获取超额权限,能够实现对任何代码权限的执行,进而导致安全风险。(三)镜像的安全风险Dockerhub 由 Docker 集中提供,便于用户上传自建镜像,也便于其他用户进行下载,进而提高环境的搭建速度。(四)容器的安全风险在容器具体运行过程中,可能会出现配置不当等情况,该问题可能会引发多种安全类事件的发生。例如,在Privileged 的特权下,容器能够获得超级权限,即用户的所有权限,那么它就可以将宿主机全部资源搭载在容器内。在容器重启策略的配置中,如果容器的重新启动次数没有限制,多次重新启动可能会导致计算资源消耗殆尽,最终开启阻挡服务攻击模式。同时,容器中有着大量的敏感文件,可能导致更为严重的情况。容器所用网络带宽没有限制,容器中存在 DoS 攻击或者破坏容器之间实时交互能力的风险3。(五)网络的安全风险在 Docker 容器网络中,一般所采取的连接方式是桥接,首先为宿主机创设虚拟网桥,即 Docker0,将其作为传统的交换机,以及各网络接口之间的分组自动转发。同主机中容器间使用网桥模式,没有筛选转发数据分组,易受 ARP 欺骗及 MAC 泛洪攻击的影响。如果容器内的应用出现恶意使用内核资源的情况,可能会对主机上其他容器产生消极影响。例如,在 Linux 系统中,如果时常出现恶意访问随机产生函数的情况,那么可能影响主机其他业务的正常运转。在频繁地创建与删除容器时,那么 IP 地址会随着不同的容器状态而随机分布,同时进行捆绑,通常情况下,新创建的容器 IP 基本上都有过绑定行为,与其他容器之间有过捆绑,因此,在攻击原容器时,最终还会导致新容器被攻击。(六)数据的安全风险在镜像的构造过程中,由于个体的疏忽而在其中加入敏感信息。例如,数据库认证密码给在生产环境下的部署与应用埋下安全隐患。在同一台宿主机上,容器中数据卷可能会被其他用户非法使用。再如,在容器回收时,针对数据卷或者内存中数据清理不完全时,可能导致数据泄露的问题。(七)编排管理的安全风险Kubernetes,简称 K8S,是现阶段接受程度最广且使用人数最多的容器管理与编排系统。K8S 的构成比较清晰,通常由 1 个/多个 Master 节点,或者是 1 个/n 个 Node 节点。而Master 节点通常含有多个较为重要的部件,如与存储关联较大的 Etcd 组件、Scheduler 组件与调度相关、ControllerManager 组件与集群控制相关。五、Docker 技术与传统计算机软件的区别与优点(一)传统计算机软件在流程部署和存在不足在计算机软件开发中,包括以下常见的部署工艺4:服务器的安装、数据库的建设、搭建开发环境,以及分配相关网络等;开发与测试有关编码,管理版本等;完成了硬件系统的组态安装和运行,传统计算机软件开发过程中存在的主要弊端:开发时资源利用率不高、无法有效地分离单物理机应用;其他软件的开发与运行维护;复杂版本的测试与管理;传统虚拟机具有启动速度慢、管理环节繁杂,以及占用较大的空间等诸多问题;较高的迁移成本。(二)Docker 技术的部署以及优势IT 系统一般包含四个层面,分别是硬件、系统、平台和程序。而软件开发人员主要负责的内容包括代码编辑、发布、系统构建以及相关的测试环节。运行维护人员负责操作系统的安装与优化,提升对硬件以及相关配置的性能。在工 程 技 术INDUSTRIAL INNOVATION 产业创新研究147Docker 技术中,能够为系统营造良好的运行环境,将硬件系统剥离出上、下层的操作系统,最终缩短软件的开发周期,提高软件的开发速度。比较两者之间的特点后发现,不同的地方主要体现在两个方面:(1)Docker 技术比传统虚拟化技术的粒度更小,且重量更轻,在虚拟化硬件后,可以忽略即时编译,以及指令级模拟等内容;传统虚拟技术以构建可适用虚拟机为目的,以及 Docker 技术,即打包源码、分配环境与依赖库,为虚拟机的创建奠定基础。(2)在 Docker 技术中,并没有完全采取虚拟的 linux 操作系统,在程序运行过程中,其核心操作系统实现了保留,所以相比于传统虚拟技术,Docker 技术缩短了启动过程所需的时间,同时空间占用比例相对较小,此外,还具备了发放功能,便于复制等多种优点。Docker 虚拟化技术实现了对特定操作系统管理资源的合理分割,并在分割完成后将其分配至独立的组内,保证其均衡性,有助于资源利用率的提升。在现实应用过程中,Docker 技术的用途广泛,主要体现在:应用范围除了以上,对于一般的服务器也是如此;容器可被迅速地建立或移除;实现了数据库、Web 应用,以及后端服务的部署与扩展。六、利用 Docker 技术实现体系架构Docker 一般由 CS(Client/server)构建,用户端为远程控制器,利用 DockerHost 接受 TCP/RESR 请求,具体的请求内容通常包含:容器的创建、容器的删除,以及容器保存等。而体系机构框架结构的基本流程:将 Daemom 部署于 Docker 的服务端,然后发送管理请求,且该请求需以客户端为署名,而后由 driver 将请求发送至容器,最后,发挥 libContaine 的作用,将隔离接口提供给 Linux 内核,使得Docker 技术构建与技术体系更加的完善。值得注意的一点是,Docker 容器操作系统还能满足用户轻量级的需求5。七、Docker 技术用于计算机软件开发(一)在开发环境搭建上采用 Docker采用 Docker 技术构建开发环境,不但能够提升开发环境的延展性,还能节省磁盘空间。搭建具体应用步骤:在完成了 Image(镜像)构建后,Image 实现了不同开发环境之间的扩展。随着 Image 启动到结束,容器端口在主机上得到映射。以达到快速编辑 host 主机代码,在

此文档下载收益归作者所有

下载文档
你可能关注的文档
收起
展开