《Hello,World公开课》Docker已死?听听他怎么说

开课吧开课吧锤锤2021-03-10 19:14

    2020年底,Kubernetes在当时最新的Changelog中宣布,自V1.20后将弃用Docker,一石激起千层浪。Docker镜像不能用了?Podman难道要取Docker而代之?

    此后唱衰Docker的消息不绝于耳。3月9日,开课吧《Hello,World公开课》邀请《Istio实战指南》作者,ServiceMesher.com管理委员会核心成员马若飞老师,让他来谈谈,Docker现如今是什么情况?

    为什么需要虚拟化技术

    对于个人而言,虚拟机在个人演示,备份,隔离方面都有很重要的应用,小开依稀记得大学毕业做毕业设计要用到Siemens的WinCC与Step7,但Siemens的软件是不支持Windows10的。为了不重新做系统,小开用VMM虚拟了一个Windows7系统,顺利完成了毕业设计。

    对于企业而已,虚拟化技术显得更为重要,它是一种资源管理技术,更是重新组织系统资源的一种手段,以JavaWeb应用为例,如果你想将代码部署到虚拟机上,需要经历三个步骤

    -编译成war包

    -在VM或云主机部署一个webserver,如Tomcat

    -上传(scp)war包到VM

动态

    但这里就引申出一个问题,如果你在多个环境中部署多个应用,该怎么办?

    这时,PaaS的出现解决了以上的问题,PaaS提供了一套完整的应用打包和分发机制和沙盒(容器)隔离应用。但是PaaS也有自己的问题

    -需要为不同语言、不同框架、不同版本维护一个包

    -本地能运行的应用(包),部署后不能运行,需要额外修改环境、配置

    -应用一键部署,环境需要维护

    眼看它起高楼,眼看它楼塌了

    2013年前,Docker还是一个默默无闻的小公司,此时还是PaaS的天下,前面我们提到过PaaS平台最大的问题是环境维护成本过高,Docker击败PaaS的杀手锏是Docker镜像将应用与环境整体打包镜像到任何实例中,通过这种降维打击,Dcoker单方面宣布了Paas平台的结束。

    Docker大红大紫后很快表现出来在商业化方面的野心。2014年,Docker发布容器编排工具Swarm,Docker不仅仅想做幕后英雄,它想构建自己的生态,Swarm此后成为经营Docker生态的抓手。

    然而,Swarm的发布却得罪了Docker最大的贡献者CoreOS,2014年底CoreOS推出自己的RKT容器。

    同年,现如今的业界霸主Kubernetes发布,得益于依托Google多年经验沉淀,Kubernetes凭借全新的设计理念,如声明式API等方式避免与Docker正面接触,逐渐蚕食Swarm市场份额。

    前有劲敌追赶,但此时Docker在商业化方面却昏招迭出,针对Docker这个顶级的开源项目,Docker公司采取强势的商业策略,甚至出现了一言堂的情况。

动态

    为了对抗Docker强硬的政策,大批厂商纷纷倒戈。于此同时,云原生基金会(CNCF)成立,这加速了Kubernetes生态构建。此时,Kubernetes凭借开放民主的策略,已经成为容器领域炙手可热的应用。

    时间来到2017年,Docker公司宣布Docker将内置Kubernetes,这意味着Docker已经臣服于Kubernetes。2020年9月,Docker宣布放弃更新Swarm。

    同年年底,业界发生了一颗重磅炸弹,Kubernetes宣布放弃对Docker运行时的支持。这意味着,Kubernetes单方面宣布了对Docker商业战争的胜利,就如同当年Docker革了PaaS平台的命一样。

    诚然,Docker目前依然是最流行的容器构建工具,用户人群非常庞大。但就如那句名言,老兵不死,只是逐渐凋零。

    眼看它起高楼,眼看它宴宾客,眼看它楼塌了!

动态

    Docker底层技术

    Docker底层引擎技术是一个典型的C/S架构的多组件应用,分为Server端dockerd和Client端CLI,中间层是RestAPI。如果我们分析Docker底层核心技术,可以发现借鉴了很多Linux/Unix的技术

    -namespace

    -cgroup

    -rootfs/UnionFS

    namespace做隔离,通过限制容器只能看到一部分的资源。cgroup主要功能是资源限制,通过对进程做资源限制,使进程只能使用一部分系统资源,比如CPU,磁盘,网络带宽等。而rootfs/UnionFS是基于Linux的联合文件系统。 简单来说,我们可以把容器看作一个由namespace和cgroup构成的运行时的隔离环境。

    Docker常用命令

动态

    讲师介绍

    马若飞,就职于某跨国互联网公司,负责核心业务系统的微服务架构、云原生应用的落地工作。AWSContainerHero,《Istio实战指南》作者,人民邮电出版社IT专业图书专家顾问。中国最大的服务网格社区ServiceMesher.com管理委员会核心成员,云原生社区VIP,Istio.iocontributor。研究方向为微服务、ServiceMesh、云原生技术。

    《Hello,World公开课》是由开课吧推出面向广大开发工程师的免费加餐课,我们希望能搭建起一座桥梁,将业内的最热门的技术,最好的解决方案一起打包免费送给你。无论你是初入职场的应届生,还是准备升职加薪的职场精英,相信这里都有你需要的内容。更多《Hello,World公开课》尽在开课吧广场动态信息频道!

有用
分享