前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >市值13亿美元,创始人离职,被大厂抛弃,Docker 是个啥?

市值13亿美元,创始人离职,被大厂抛弃,Docker 是个啥?

作者头像
用户9822880
发布2022-06-13 15:16:19
9770
发布2022-06-13 15:16:19
举报
文章被收录于专栏:3分钟云计算3分钟云计算

点击上方蓝色“3分钟云计算”关注我们,设个星标,每天学习云计算知识

有瓜友觉得上篇文章👇太干了,咽不下去,那今天我们来点湿的。 Docker 公司原名dotCloud, 位于美国旧金山,主要提供基于PaaS(Platform as a Service, 平台即服务)的云计算服务。但Docker 产品开源后实在太火,公司也就改用Docker 命名了,目前市值高达13亿美元。这应该是创业公司中最成功的案例。就下面这位大神,Solomon Hykes

Docker 自2013年开源以来一直都是云计算领域的热点,加之Google、Red Hat、微软、IBM的加持,发展迅速。Red Hat 在RHEL 6.5 中就添加了对Docker 的支持。但是Docker 公司一直找不到好的盈利模式,CEO换了一茬又一茬,推出的Swarm容器编排产品也败给了Kubernetes。 创始人 Solomon Hykes 也正式从 Docker 公司离职,不再担任公司的日常运作工作。

去年12月份,Kuberentes 宣布自 v1.20 起放弃对Docker的支持,改用由Google, Red Hat 联合推出的CRI 容器运行时。无论Docker 公司的命运如何,docker 产品对整个云计算行业的贡献是不可磨灭的。

Docker 是一个容器引擎,也叫容器运行时,基于LXC(Linux Container,后来改用了自己的libContainer),可以让开发者把他们的应用程序以及依赖包放到容器中,然后发布到任何主流平台上,比如Linux, Mac, Windows。这个容器管理引擎大大降低了容器技术的使用门槛,轻量级,可移植,虚拟化,语言无关,写了程序扔上去做成镜像可以随处部署和运行,开发、测试和生产环境彻底统一了,还能进行资源管控和虚拟化。

在Docker 之前,开发者都深陷软件环境的配置之苦,不同环境下的配置问题层出不穷,想用一款开源软件,结果配置好久都运行不起来,查看网上的各种教程,还是不行,最后不得不放弃使用。环境差异,使原本简单的问题复杂化,拖慢我们的开发进程。拿来主义对开发、运维、测试人员是件好事,开箱即用,让我们把有限精力放到自己专注的事情上。

或许有人会说,用虚拟机啊,的确,在Docker之前,业界的宠儿是虚拟机。但是虚拟机太笨重了,对资源也是一种浪费。一台服务器可以运行十几个虚拟机实例,但是现在它可以运行几百个Docker 实例,而且秒级启动,不香吗?可以简单理解为Docker就是轻量级的虚拟机。

Docker是容器的一种,容器是一种轻量级的虚拟技术,而虚拟机则是重量级的虚拟技术。如下图,左边是Docker容器, 右边是传统虚拟机。

虚拟机是一种基于硬件的虚拟技术,它完全虚拟一整套物理主机,包含CPU、内存、磁盘、网卡等硬件设备,给用户呈现的就是一个物理主机的特性。用户可以在虚拟机里面安装各种操作系统,比如,在Mac上安装一个虚拟机,在虚拟机里安装Windos系统,这样这个Mac电脑就是双系统,也可以在Windows上安装虚拟机,在虚拟机里面安装Linux系统。

容器是一种基于操作系统的虚拟技术,简单来说,容器将软件应用程序与操作系统分离,它运行在操作系统之上的用户空间,所有的容器都共用一个系统内核。容器引擎提供进程级别的隔离,让每个容器都像运行在单独的系统之上,但又能够共享很多底层资源。比起虚拟机,容器更加轻量、快速、易于管理。除了Docker,常见的容器还有Solaries Zones、BSD jails和LXC等。

当然,容器和虚拟机各有各的优点,谁也不是谁的替代品,只是在不同的需求下各有优势。那么既然在Docker之前已经有了容器技术产品,为啥Docker一经问世还这么火呢?

主要是Docker 对容器进行了一些改进、优化,如下:

  • 跨平台的可移植性。Docker 定义了一种统一标准的打包格式,将应用及其依赖打包进单个的镜像中,改镜像可以在任何Docker可运行的机器之间传输,在不同的机器上Docker隔离了应用和平台的直接联系,对配置进行了抽象,使得在任何平台上应用的运行环境都一样。
  • 面向应用。Docker是为优化应用部署而生的,体现在API、用户接口和文档等,而LXC是面向机器的,更关注如何成为更轻量的机器,比如如何使用更少的CPU、RAM等。
  • 版本控制。类似代码管理工具Git. 可以很方便的查看容器的版本信息,查看版本差异,提交,回滚等。
  • 复用性。你可以使用一个基础镜像构建更多的应用容器。比如,你可以配置好一个Golang的运行环境作为基础镜像,然后在这个镜像上运行不同的应用。
  • 共享性。你创建好的镜像可以上传到DockerHub,Quay.io等镜像托管平台供全世界的kai开发者使用,当然你也可以使用别人创建好的镜像,避免一次次的造轮子。
  • 良好的生态。Dockert提供了API供各种工具调用。

介绍了这么多那么Docker具体做什么呢?

  • 加速开发。使开发、测试、生产环境一致。
  • 自动打包、部署应用
  • 创建PaaS环境
  • 自动化测试、持续集成、部署。就是这几年大火的CI/CD,DevOps

传统的软件产品开发一般是这样的

1、确定产品定位和需求,确定首次迭代的范围。 2、制作界面原型。 3、技术选型,然后根据技术选型为每个开发者搭建开发环境和技术栈,例如 Java 环境、Python 环境、Ruby 环境、数据库、中间件等等。 4、构建基础技术框架和服务,包括日志、存储、消息、缓存、搜索、数据源、集群扩展等等。 5、模拟用户容量,构建测试环境。 6、开始编写真正的业务代码,实现产品功能。 7、迭代开发/测试,生生不息,周而复始,直到头发掉光为止……

等上了PaaS,也就是如火如荼的云计算,就可以省略3、4、5步了,传统软件开发模式从瀑布模式转向敏捷开发,降低开发成本,大幅提高了企业的效率,可以更快、更好、更强的推出自己的软件产品,在如今的激烈竞争中脱颖而出。

20世纪60年代以前的海运,香蕉和钢材可能放到一起,不仅托运人担心货物会发生挤压损坏,而且港口码头装卸各式各样的货物非常麻烦,效率及其低下。最后在美国陆运运输公司的推动下,制定了国际标准集装箱来解决这个棘手问题。所有的货物都可以通过集装箱指定的方式打包进集装箱内部,货物之间的相互影响被集装箱隔绝。集装箱是一个货物集对外的标准接口,无论是码头、汽运、车运,处理的都是集装箱,这极大的加快了货物的装卸、堆积、运输速度,提高了运输的安全性,降低了运输成本。

在软件应用开发中,我们期待有一种东西,可以像集装箱一样方便的打包应用程序,使其相互隔离,在各种环境下运行,在各种平台之间易于移植。Docker 正是这个集装箱。Docker,改变了整个软件行业,称其为开源英雄丝毫不为过!


本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-01-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 3分钟云计算 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档