Docker已死?听听他怎么说(开课吧)

简介: Docker已死?听听他怎么说(开课吧)

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系统,顺利完成了毕业设计。

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

编译成war包

在VM或云主机部署一个web server,如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,中间层是Rest API。如果我们分析Docker底层核心技术,可以发现借鉴了很多Linux/Unix的技术

namespace

cgroup

rootfs/UnionFS

namespace做隔离,通过限制容器只能看到一部分的资源。cgroup主要功能是资源限制,通过对进程做资源限制,使进程只能使用一部分系统资源,比如CPU,磁盘,网络带宽等。而rootfs/UnionFS是基于Linux的联合文件系统。

简单来说,我们可以把容器看作一个由namespace和cgroup构成的运行时的隔离环境。

Docker常用命令


相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
关系型数据库 MySQL 数据库
使用 Docker 安装 MySQL 8
使用 Docker 安装 MySQL 8
2910 4
|
缓存 测试技术 持续交付
docker desktop 搜索不到images
【2月更文挑战第23天】
3098 0
|
传感器 网络协议 Linux
在Linux中使用libmodbus库进行Modbus TCP通信
Modbus TCP是一种常见的工业通信协议,用于在自动化系统中传输数据。libmodbus是一个流行的C库,用于在Linux系统上实现Modbus TCP通信。本文将介绍如何使用libmodbus库在Linux上创建Modbus TCP通信的示例代码。
3772 0
|
应用服务中间件 网络安全 nginx
使用let's encrypt免费ssl证书启用网站https
网站启用https访问,首先需要一个证书机构颁发的ssl证书,目前给个人免费颁发证书的机构,比较好的是:let's encrypt。Let's Encrypt是由Mozilla、思科、Akamai、IdenTrust和EFF等组织发起公共的免费SSL项目,免费,安装方便,配置简单,值得信赖。
9783 0
|
12月前
|
安全 应用服务中间件 PHP
中间件漏洞
中间件漏洞
|
测试技术 开发者
单元测试问题之在Mockito中静态方法的调用,如何模拟
单元测试问题之在Mockito中静态方法的调用,如何模拟
|
网络协议 应用服务中间件 nginx
性能提升-如何设置Windows操作系统TIME_WAIT状态的TCP连接快速回收时间?
性能提升-如何设置Windows操作系统TIME_WAIT状态的TCP连接快速回收时间?
451 0
|
网络协议 网络虚拟化 网络架构
MPLS VPN协议高级应用
MPLS VPN协议高级应用
|
Shell 数据安全/隐私保护
如何在 Debian 12 上添加和删除用户?
【4月更文挑战第6天】
3876 1
如何在 Debian 12 上添加和删除用户?
|
存储 负载均衡 Kubernetes
2022年 Docker Swarm还有什么存在的意义 ?
2022年 Docker Swarm还有什么存在的意义 ?
2022年 Docker Swarm还有什么存在的意义 ?