热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

为什么Docker如此受欢迎

为什么,doc

如今,人们肯定听说过Docker容器,也会知道Docker很受欢迎。但是知道这是为什么吗?以下看看当今用户对于Docker有着极大兴趣的因素。

在深入讨论Docker受欢迎的因素之前,值得注意的是,Docker不是唯一的容器平台,也不是第一个推出的。

其他框架,如OpenVZ和LXC,从20世纪20年代中期诞生。而其他类似容器的技术,如FreeBSD更进一步。而Docker在2013年发布,与目前的大多数主流技术相比,是一个非常年轻的技术。

不过奇怪的是,Docker并不是一个比较成熟的容器平台,在过去几年中已经大大地凸显了这一点。这是一个值得思考的结果,为了了解什么使容器普遍如此受欢迎,以及为什么Docker是如此成功地替代容器框架,而很少采用。

解释Docker的流行度

所以,人们需要考虑这两个因素。

首先,这就是为什么容器在过去几年中一直被证明对各种规模的企业具有吸引力的原因:

容器的启动和停止速度比虚拟机快得多。

容器更易于移植,因为无论何种类型的操作系统托管它们,容器主机环境都是非常一致的。

容器应用程序易于扩展,因为容器可以从环境中快速添加或减少。

容器可以轻松将复杂的单片应用程序分解成更小的模块化微服务。

那么有一个问题,那就是为什么Docker变得如此受欢迎。这是一个很难回答的问题,但专家认为以下因素正在发挥:

Docker从一开始就是开源的。这有助于Docker在技术市场更有吸引力,到2013年,开始将开源视为软件生产的默认模式(如果Docker在五年前出现,当开放源码的商业兴趣不那么强烈时,开源并不会对Docker有所帮助。)

Docker出现在正确的时间。到2013年,虚拟机终于成为一种过时的技术。组织正在寻找一种更精简,更方便的部署应用程序,Docker恰好符合要求。当OpenVZ和LXC出现在20世纪20年代中期时,传统的虚拟化技术还没有完成,所以这些容器框架不太吸引人。

Docker与DevOps革命相吻合。DevOps在2010年流行起来,强调了软件交付中的敏捷性,灵活性和可扩展性。Docker容器恰好提供了一个很好的构建块,用于根据DevOps规定创建软件交付管道和部署应用程序。

Linux的比较

在许多方面,Docker的不可预测的成功反映了20世纪90年代Linux内核的成功。

正如专家所指出的那样,Linux作为一个默默无闻的软件项目进入了世界,这是一个芬兰学生运行的一个模糊的软件项目,没有资金或先进的设备。Linux最终成功地取得了巨大的成功,而像GNU和BSD这样的内核项目更为突出,更多的资金,但其专业化的内核项目受到限制。

Docker和LXC之类的替代品之间的区别可能不如Linux和GNU Hurd那样显著。尽管如此,Linux和Docker的崛起在相当短的时间内从默默无闻的项目到具有巨大商业价值的项目,这二者十分相似。

结论

专家认为时间可以解释为什么Docker容器变得如此受欢迎。Docker容器解决了过去五年来许多组织寻求解决的软件交付和部署问题。虽然早期的容器框架提供了类似的解决方案,但人们对它们的兴趣有限,因为他们解决的问题在首次亮相时,当时人们的需求并不紧迫。

一般来说,专家认为与Docker的时间相比,Linux的成功与否更为关键。Linux的成功很大程度上是由于其他内核项目(尤其是GNU)的混乱,因为Linux早期采用了创新的,分散的开发策略。但是时运肯定帮助Linux获得了成功,就像Docker一样。


本文作者:Harris编译

来源:51CTO


推荐阅读
  • 本文探讨了容器技术在安全方面面临的挑战,并提出了相应的解决方案。多租户保护、用户访问控制、中毒的镜像、验证和加密、容器守护以及容器监控都是容器技术中需要关注的安全问题。通过在虚拟机中运行容器、限制特权升级、使用受信任的镜像库、进行验证和加密、限制容器守护进程的访问以及监控容器栈,可以提高容器技术的安全性。未来,随着容器技术的发展,还需解决诸如硬件支持、软件定义基础设施集成等挑战。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • 1.脚本功能1)自动替换jar包中的配置文件。2)自动备份老版本的Jar包3)自动判断是初次启动还是更新服务2.脚本准备进入ho ... [详细]
  • DockerDataCenter系列(四)-离线安装UCP和DTR,Go语言社区,Golang程序员人脉社 ... [详细]
  • 随着我司的应用都开始容器化,相应的ETL流程也需要迁移到容器中。常规的SQL和shell脚本迁移之后执行基本没有问题,主要的问题在于数据接入使用kettle的场景下,kettle启 ... [详细]
  • k8s+springboot+Eureka如何平滑上下线服务
    k8s+springboot+Eureka如何平滑上下线服务目录服务平滑上下线-k8s版本目录“上篇介绍了springboot+Euraka服务平滑上下线的方式,有部分小伙伴反馈k ... [详细]
  • systemd-nspawn可以创建最轻量级的容器(ns的意思就是namespace),本文的实验平台是Ubuntu16.04,x86_64机器。本文的目的是:在Ubuntu中用syst ... [详细]
  • 本文主要介绍关于linux文件描述符设置,centos7设置文件句柄数,centos7查看进程数的知识点,对【Linux之进程数和句柄数】和【linux句柄数含义】有兴趣的朋友可以看下由【东城绝神】投 ... [详细]
  • docker增加restart=always, docker重启后自动启动容器的方法
    本文介绍了在运行docker容器时如何添加参数来保证每次docker服务重启后容器也自动重启的方法,以及如何使用命令来更新已启动的容器。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • [翻译]微服务设计模式5. 服务发现服务端服务发现
    服务之间需要互相调用,在单体架构中,服务之间的互相调用直接通过编程语言层面的方法调用就搞定了。在传统的分布式应用的部署中,服务地 ... [详细]
author-avatar
Android代码
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有