`
乱蓬头199303
  • 浏览: 80546 次
文章分类
社区版块
存档分类
最新评论

专家观点:Docker 架构优缺点大剖析

 
阅读更多

摘要: 在Docker问世后,其打包应用程式、快速部署的能耐,受到开发者的广大欢迎。在2015年,Docker进一步推出私有储存库功能Docker Registry,以及原生网路功能Docker Networking,让企业更容易自行架构Docker丛集。

在Docker问世后,其打包应用程式、快速部署的能耐,受到开发者的广大欢迎。在2015年,Docker进一步推出私有储存库功能Docker Registry,以及原生网路功能Docker Networking,让企业更容易自行架构Docker丛集。这些都让Docker逐渐成为正式环境的新选择。

在Docker受到一片好评下,着有《Docker源码分析》,大受到中国Docker社群好评的孙宏亮认为,Docker至少有3大缺点,还无法满足各种环境的需求。深入研究Docker原始码的他,也是中国Docker PaaS服务商DaoCloud参与第一线开发的软体工程师。

别于多数Docker开发者从应用程式面切入谈论Docker的角度,孙宏亮在2015 Container Summit上,则是选择从Docker的程式码设计架构,来剖析优缺点。

孙宏亮也指出,Container技术虽然已经发展许久,但是透过Docker独特的映像档设计,才使Container技术在近年发扬光大。

独特映像档设计让Docker爆红

Container技术最早可以追溯至1979年时推出的Unix V7,其中的chroot系统呼叫指令,透过更改程序的根目录,达到系统程序隔离的效果。而发展已经超过30年的Container技术,为何迟至2013年才因为Docker横扫全球IT业界,孙宏亮解释,因为Docker映像档的设计,使得Docker得以打破过去「程式码即应用」的观念。

传统上认为,软体开发结束后,所产出的成果即是程式码,或是能够编译执行的二元执行档。

而为了让这些程式码可以顺利执行,开发团队也得准备完整的部署文件,让维运团队得以部署应用程式,不过,即便如此,仍然常常发生部署失败的状况。孙宏亮表示,Docker透过映像档,将作业系统核心外,运作应用程式所需要的系统环境,由下而上打包,达到应用程式跨平台间的无缝接轨运作。

而微软已经宣布,将在下一代的Windows Server 2016中内建Docker Engine,使得Windows Sever可以原生支援Docker。但孙宏亮也解释,目前Windows对Docker的支援,多数还是在API层。除了Windows作业系统与Linux在Kernel层差异很大外,Windows也有发展有自家的Container技术。
screenshot

Docker映像档的设计,使得Docker得以打破过去「程式码即应用」的观念。透过映像档,将作业系统核心除外,运作应用程式所需要的系统环境,由下而上打包,达到应用程式跨平台间的无缝接轨运作。

系统服务Docker化的障碍

虽然Docker透过了映像档设计,解决传统维运团队在部署上的问题。但是,在将系统服务Docker化、应用程式Docker化时,使用者仍然会碰到实际面的问题。

孙宏亮表示,当应用程式必须调度系统的服务,例如利用cron服务,将工作设定为自动化执行,或是执行syslog服务收集系统日志时,此时开发者就会碰到使用Docker的障碍。

例如,虽然可以使用Docker将cron服务打包,但是Docker化的cron服务,与传统Linux中cron服务间有很大的区别。孙宏亮表示,一旦将cron服务容器化后,原始的环境变数设定都会失效。所以使用者必须分析软体、Container的运行方式,才能满足使用的需求。另外,Docker与Linux Kernel的沟通能力薄弱,行程间沟通(inter-process communication,IPC)会被进行隔离。像是NFS伺服器接受客户端提出的请求后,会将需求再次传递给Linux Kernel,「使用者将这些功能容器化前,都必须再三考虑。」他表示。

并非任何应用程式都适合Docker化

而在应用程式Docker化的方面,虽然Docker的快速部署特性很吸引人,但是未必所有的应用程式都适合Docker化,像是MySQL,孙宏亮认为如果将其Docker化则存在一些弊端。例如,当使用者的资料需要进行额外备份,需要创造MySQL的资料库Container,可以透过Docker run指令,创建一个MySQL的Database Container,或是使用docker run指令,修改MySQL的环境变数。而这些环境变数会透过Docker Daemon、Docker Engine,用json的档桉格式储存在Docker Container中。

存在于Docker Container中的环境变数,对于Docker Engine并没有意义,但是对于使用Docker的用户则存在隐忧,如果被无关的第三方看见,使用者的Container可能会产生资安上疑虑。所以,孙宏亮认为,传统开发者在使用MySQL的思维,并不能无缝转移到Docker的世界中运作。

孙宏亮表示,在Docker问世后,Docker官方也宣称Docker的设计是以应用程式为中心(application-centric),希望使用者将心力集中在开发应用程式,而Docker官方也不特别鼓励使用者,将Docker视为取代VM,作为新一代运算单元的想法。他认为,当Docker用于打包网页应用程式,或是比较单纯的系统服务,可以达到很好的Docker化效果。不过,如果要将Docker的使用范围扩大,开始涉及到作业系统的基础运行层次,或是分散式系统在推动微服务时,使用Docker会产生一些问题。

共用Linux Kernel,让Docker安全性先天不足

原文链接

分享到:
评论

相关推荐

    几种经典的网络服务器架构模型的分析与比较共5页.pdf.z

    6. 容器化和Docker架构: Docker提供了轻量级的容器化技术,使得应用可以在不同的环境中一致地运行。容器编排工具如Kubernetes可以管理和调度大量容器,实现动态扩展和服务发现。 7. 弹性计算和云原生架构: 基于...

    大型网站技术架构:核心原理与案例分析+李智慧.zip

    书中可能会详细讨论这些技术的原理、实现方式、优缺点以及实际应用案例,帮助读者理解如何在大型网站的技术架构设计中做出合适的选择。通过阅读这本书,开发者和架构师可以更好地应对高并发、大数据量的挑战,构建出...

    大型网站技术架构+核心原理与案例分析

    《大型网站技术架构:核心原理与案例分析》是由知名IT专家李智慧编著的一本深入探讨大型网站构建和优化的专业书籍。这本书旨在帮助读者理解并掌握构建高效、可扩展、高可用的大型网站所需的关键技术和策略。 在大型...

    几种经典的网络服务器架构模型的分析与比较共5页.pdf.zip

    本资料"几种经典的网络服务器架构模型的分析与比较共5页.pdf.zip"聚焦于探讨几种主流的服务器架构模式,并进行深入的对比,旨在帮助读者理解每种架构的优缺点及其适用场景。 1. 单体架构:这是最基础的架构模型,...

    历年高级系统架构师真题

    9. **架构评估与决策**:如何进行技术选型,评估不同架构的优缺点,以及如何在成本、性能、时间表之间做出权衡。 10. **项目管理与沟通**:架构师需要具备良好的团队协作和沟通能力,了解项目管理方法如瀑布模型、...

    经典高级软件架构师培训文档.rar

    文档可能详细讲解微服务的优缺点、服务拆分策略以及如何实施服务间的通信。 7. **云原生架构**:介绍如何利用云平台构建可伸缩、弹性的架构,涵盖容器化(Docker)、容器编排(Kubernetes)和Serverless计算。 8. ...

    infoq 架构师 2014年月刊收集

    《infoQ架构师2014年月刊收集》是一份涵盖了全年信息技术领域的深度分析与实践分享的资源集合。这份压缩包文件包含了2014年全年infoQ平台发布的架构师专题文章,旨在为IT从业者,尤其是架构师们提供丰富的学习材料和...

    高级架构师培训讲义PDF版

    3. **技术选型**:如何根据项目需求选择合适的技术栈,如数据库系统、中间件、编程语言等,并分析各种技术的优缺点。 4. **高性能与可扩展性**:讨论如何设计高并发、高性能的系统,包括负载均衡、缓存策略、分布式...

    JAVA基础技术框架详解一.pdf

    2. Docker 的应用场景和优缺点在云计算中的应用。 3. 物联网的概念、特点和应用场景,物联网中的数据存储和处理机制。 算法和数据结构 1. LCS 问题的解决方法和时间复杂度分析。 2. TOPK 问题的解决方法和时间...

    octopus::octopus:微服务架构可视化工具,用于可视化和分析微服务依赖关系图

    不要低估了看大图的价值,因为即使您不是每天都在做架构,您也确实需要大图您还需要这样做来进行一些影响分析特征快速开始docker pull aint/octopus:latestdocker run -it -p 5000:5000 aint/octopus:latest章鱼...

    服务框架学习路线 ppt 资料

    * 微服务架构的优缺点分析 二、注册中心 * 注册中心的定义和作用 * 注册中心的实现方式(Eureka、ZooKeeper、Consul等) * 注册中心的优缺点分析 三、服务网关 * 服务网关的定义和作用 * 服务网关的实现方式...

    软件工程中的软件架构设计教程1.pptx

    - **Docker与Kubernetes的应用场景**:适用于微服务架构、持续集成和持续部署、自动化运维。 - **选择标准**:根据实际需求和技术栈选择;考虑安全性和易用性;关注社区活跃度和支持情况。 **前端架构设计** - **...

    架构解密.从分布式到微服务

    3. 服务间通信:RESTful API、gRPC、消息队列(RabbitMQ、Kafka)等通信方式及其优缺点。 4. 微服务治理:服务注册与发现、熔断、限流、降级、健康检查等,Spring Cloud和Netflix OSS提供了丰富的微服务治理工具。 ...

    高级软件架构师培训讲义 PDF格式

    1. **软件架构基础**:介绍基本的架构模式,如分层架构、微服务架构、事件驱动架构等,并探讨它们的适用场景和优缺点。 2. **设计原则与模式**:深入解析 SOLID 原则,以及常用的设计模式,如工厂模式、策略模式、...

    infoq 架构师 2020年月刊收集

    5. **工具和框架**:可能涵盖新兴的开发框架、数据库技术和工具,如Spring Boot、Kubernetes、Vue.js等,以及它们在实际项目中的应用和优缺点。 6. **职业发展**:对于架构师个人而言,除了技术知识,领导力、沟通...

    2018年下半年系统架构师真题及答案【整理版本】

    1. **系统设计**:例如,如何设计分布式系统,如何实现负载均衡,微服务架构的优缺点等。 2. **技术选型**:包括数据库选型(SQL vs NoSQL),编程语言比较,中间件的选择等。 3. **性能优化**:比如缓存策略,...

    第八届中国系统架构师大会演讲PPT

    3. **云计算与容器技术**:随着云计算的发展,架构师需要理解公有云、私有云和混合云的优缺点,以及如何进行云迁移和云原生应用设计。容器技术如Docker和Kubernetes在部署和管理应用方面的重要性也可能是讨论的重点...

    软考高级系统架构师经验复习笔记仅供个人学习使用

    例如,常见的架构模式有分层架构、微服务架构、事件驱动架构等,每种模式都有其适用场景和优缺点。 二、系统设计原则 在设计系统架构时,应遵循一些基本原则,如模块化、抽象、信息隐藏、开放封闭原则等。这些原则...

    03从0开始学架构-专栏课.zip

    1. **架构模式与风格**:了解常见的架构模式,如微服务架构、三层架构、SOA(面向服务架构)等,以及它们各自的优缺点和适用场景。 2. **架构原则**:学习如何遵循SOLID原则、开闭原则、单一职责原则等,以确保代码...

Global site tag (gtag.js) - Google Analytics