Docker容器实战(三) - Docker的自我重新定位

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: Docker容器实战(三) - Docker的自我重新定位

Docker公司为什么在Docker项目已经取得巨大成功之后,执意走回已经让无数先驱折戟的PaaS路呢?


实际上,Docker项目一直伴随着公司管理层和股东们的阵阵担忧。他们心里明白,虽然Docker项目备受追捧,但用户们最终要部署的,还是他们的网站、服务、数据库,甚至是云计算业务。


这就意味着,只有那些能够为用户提供平台层能力的工具,才会真正成为开发者们关心和愿意付费的产品

而Docker项目这样一个只能用来创建和启停容器的小工具,最终只能充当这些平台项目的“幕后英雄”。


而谈到Docker项目的定位问题,就不得不说说Docker公司的老朋友和老对手


CoreOS

  • 定位
    一个基础设施领域创业公司
  • 核心产品
    定制化的操作系统,用户可以按照分布式集群的方式,管理所有安装了这个操作系统的节点。从而,用户在集群里部署和管理应用就像使用单机一样方便了。


Docker项目发布后,CoreOS公司很快就认识到可以把“容器”的概念无缝集成到自己的这套方案中,从而为用户提供更高层次的PaaS能力

所以,CoreOS很早就成了Docker项目的贡献者,并在短时间内成为了Docker项目中第二力量


然而,蜜月期2014年底就结束了

CoreOS公司以强烈的措辞宣布与Docker公司停止合作,并直接推出了自己研制的Rocket(后来叫rkt)容器


这次决裂源于Docker公司对Docker项目定位的不满足

Docker公司解决这种不满足的方法就是,让Docker项目提供更多的平台层能力,即向PaaS项目进化

而这,显然与CoreOS公司的核心产品和战略发生了严重冲突!!!


也就是说,Docker公司在2014年就已经定好了平台化的发展方向,并且绝对不会跟CoreOS在平台层面开展任何合作

这样看来,Docker公司在2014年12月的DockerCon上发布Swarm的举动,也就一点都不突然了。


相较于CoreOS是依托于一系列开源项目(比如Container Linux操作系统、Fleet作业调度工具、systemd进程管理和rkt容器),一层层搭建起来的平台产品

Swarm项目则是以一个完整的整体来对外提供集群管理功能

Swarm的最大亮点,则是它完全使用Docker项目原本的容器管理API来完成集群管理,比如:


  • 单机Docker项目:
docker run "我的容器
  • 多机Docker项目:
docker run -H "我的Swarm集群API地址" "我的容器"

所以在部署了Swarm的多机环境下

用户只需要使用原先的Docker指令创建一个容器

这个请求就会被Swarm拦截下来处理,然后通过具体的调度算法找到一个合适的Docker Daemon运行起来。

这个操作方式简洁明了,对于已经了解过Docker命令行的开发者们也很容易掌握。所以,这样一个“原生”的Docker容器集群管理项目一经发布,就受到了已有Docker用户群的热捧

而相比之下,CoreOS的解决方案就显得非常另类,更不用说用户还要去接受完全让人摸不着头脑、新造的容器项目rkt了。


当然,Swarm项目只是Docker公司重新定义“PaaS”的关键一环而已

在2014年到2015年这段时间里,Docker项目的迅速走红催生出了一个非常繁荣的“Docker生态”。在这个生态里,围绕着Docker在各个层次进行集成和创新的项目层出不穷。


Fig

image.png

而此时已经大红大紫到“不差钱”的Docker公司,开始及时地借助这波浪潮通过并购来完善自己的平台层能力。其中一个最成功的案例,莫过于对Fig项目的收购。

要知道,Fig项目基本上只是靠两个人全职开发和维护的,可它却是当时GitHub上热度堪比Docker项目的明星


Fig项目之所以受欢迎,在于它在开发者面前第一次提出了“容器编排”(Container Orchestration)的概念。


其实,“编排”(Orchestration)在云计算行业里不算是新词汇,它主要是指用户如何通过某些工具或者配置来完成一组虚拟机以及关联资源的定义、配置、创建、删除等工作,然后由云计算平台按照这些指定的逻辑来完成的过程。


而容器时代,“编排”显然就是对Docker容器的一系列定义、配置和创建动作的管理。而Fig的工作实际上非常简单:假如现在用户需要部署的是应用容器A、数据库容器B、负载均衡容器C,那么Fig就允许用户把A、B、C三个容器定义在一个配置文件中,并且可以指定它们之间的关联关系,比如容器A需要访问数据库容器B。


接下来,你只需要执行一条非常简单的指令

fig up


Fig就会把这些容器的定义和配置交给Docker API按照访问逻辑依次创建,你的一系列容器就都启动了;而容器A与B之间的关联关系,也会交给Docker的Link功能通过写入hosts文件的方式进行配置。更重要的是,你还可以在Fig的配置文件里定义各种容器的副本个数等编排参数,再加上Swarm的集群管理能力,一个活脱脱的PaaS呼之欲出。


Fig项目被收购后改名为Compose,它成了Docker公司到目前为止第二大受欢迎的项目,一直到今天也依然被很多人使用。

image.png

image.png

还有很多令人眼前一亮的开源项目或公司

  • 专门负责处理容器网络的SocketPlane项目(后来被Docker公司收购)

image.png

  • 专门负责处理容器存储的Flocker项目(后来被EMC公司收购)

image.png

  • 专门给Docker集群做图形化管理界面和对外提供云服务的Tutum项目(后来被Docker公司收购)等等。


一时之间,整个后端和云计算领域的聪明才俊都汇集在了这个“小鲸鱼”的周围,为Docker生态的蓬勃发展献上了自己的智慧。


而除了这个异常繁荣的、围绕着Docker项目和公司的生态之外,还有一个势力在当时也是风头无两,这就是老牌集群管理项目Mesos和它背后的创业公司Mesosphere。


Mesos

Mesos作为Berkeley主导的大数据套件之一,是大数据火热时最受欢迎的资源管理项目,也是跟Yarn项目杀得难舍难分的实力派选手

image.png

不过,大数据所关注的计算密集型离线业务,其实并不像常规的Web服务那样适合用容器进行托管和扩容,也没有对应用打包的强烈需求,所以Hadoop、Spark等项目到现在也没在容器技术上投下更大的赌注;但是对于Mesos来说,天生的两层调度机制让它非常容易从大数据领域抽身,转而去支持受众更加广泛的PaaS业务。


在这种思路的指导下,Mesosphere公司发布了一个名为Marathon的项目,而这个项目很快就成为了Docker Swarm的一个有力竞争对手。


虽然不能提供像Swarm那样的原生Docker API,Mesos社区却拥有一个独特的竞争力:超大规模集群的管理经验。


早在几年前,Mesos就已经通过了万台节点的验证,2014年之后又被广泛使用在eBay等大型互联网公司的生产环境中。而这次通过Marathon实现了诸如应用托管和负载均衡的PaaS功能之后,Mesos+Marathon的组合实际上进化成了一个高度成熟的PaaS项目,同时还能很好地支持大数据业务。


所以,在这波容器化浪潮中,Mesosphere公司不失时机地提出了一个名叫“DC/OS”(数据中心操作系统)的口号和产品,旨在使用户能够像管理一台机器那样管理一个万级别的物理机集群,并且使用Docker容器在这个集群里自由地部署应用。而这,对很多大型企业来说具有着非同寻常的吸引力。


这时,如果你再去审视当时的容器技术生态,就不难发现CoreOS公司竟然显得有些尴尬了。它的rkt容器完全打不开局面,Fleet集群管理项目更是少有人问津,CoreOS完全被Docker公司压制了。


而处境同样不容乐观的似乎还有RedHat,作为Docker项目早期的重要贡献者,RedHat也是因为对Docker公司平台化战略不满而愤愤退出。但此时,它竟只剩下OpenShift这个跟Cloud Foundry同时代的经典PaaS一张牌可以打,跟Docker Swarm和转型后的Mesos完全不在同一个“竞技水平”之上。


那么,事实果真如此吗?


Kubernetes横空出世

就在这一年的6月,基础设施领域的翘楚Google公司突然发力,正式宣告了一个名叫Kubernetes项目的诞生

网络异常,图片无法展示
|

而这个项目,不仅挽救了当时的CoreOS和RedHat,还如同当年Docker项目的横空出世一样,再一次改变了整个容器市场的格局。


参考

  • docker官网
  • Docker实战
  • 深入剖析Kubernetes


相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
7天前
|
Linux iOS开发 Docker
Docker:容器化技术的领航者 —— 从基础到实践的全面解析
在云计算与微服务架构日益盛行的今天,Docker作为容器化技术的佼佼者,正引领着一场软件开发与部署的革命。它不仅极大地提升了应用部署的灵活性与效率,还为持续集成/持续部署(CI/CD)提供了强有力的支撑。
176 69
|
7天前
|
运维 Cloud Native Docker
云原生技术入门:Docker容器化实战
【9月更文挑战第20天】本文将引导你走进云原生技术的世界,通过Docker容器化技术的实战演练,深入理解其背后的原理和应用。我们将一起探索如何在云平台上利用Docker简化部署、扩展和管理应用程序的过程,并揭示这一技术如何改变现代软件的开发和运维模式。
|
2天前
|
Cloud Native 持续交付 Docker
云原生技术入门与实践:Docker容器化部署示例
【9月更文挑战第25天】在数字化转型的浪潮下,云原生技术成为推动企业创新的重要力量。本文旨在通过浅显易懂的语言,为初学者揭示云原生技术的核心概念及其应用价值。我们将以Docker容器为例,逐步引导读者了解如何将应用程序容器化,并在云端高效运行。这不仅是对技术趋势的跟随,更是对资源利用和开发效率提升的探索。
12 4
|
3天前
|
存储 Docker 容器
Docker中容器间的通信方式有哪些13
Docker中容器间的通信方式有哪些13
13 4
|
3天前
|
关系型数据库 Linux 虚拟化
Docker入门基础实战
Docker入门基础实战
|
1天前
|
Docker 容器
docker容器内需要执行sudo hwclock --systohc吗
docker容器内需要执行sudo hwclock --systohc吗
|
1天前
|
Docker 容器
6-16|docker怎么把容器内的文件传出来
6-16|docker怎么把容器内的文件传出来
|
1天前
|
运维 监控 Docker
掌握 Docker Compose:简化你的多容器应用部署
在微服务架构和容器化技术日益普及的今天,管理多个容器的部署和运维变得颇具挑战。Docker Compose 通过一个 YAML 文件定义和运行多容器 Docker 应用,极大地简化了这一过程。本文介绍了 Docker Compose 的基本概念、使用方法及其优势,包括简化配置、一键部署、易于版本控制和环境一致性。通过具体示例展示了如何安装 Docker Compose、创建 `docker-compose.yml` 文件并管理服务。掌握 Docker Compose 可显著提高开发效率和应用运维质量。
|
26天前
|
应用服务中间件 Shell nginx
Docker容器操作基础命令
关于Docker容器操作基础命令的教程,涵盖了从启动、查看、删除容器到端口映射和容器信息获取的一系列常用命令及其使用方法。
60 14
|
1月前
|
存储 Docker 容器
在Docker中,容器退出后,通过docker ps命令查看不到,数据会丢失么?
在Docker中,容器退出后,通过docker ps命令查看不到,数据会丢失么?