Docker简介以及Docker历史
Docker是⼀种运⾏于 Linux 和 Windows 上的软件,⽤于创建、管理和编排容器。
Docker 是在 GitHub 上开发的 Moby 开源项⽬的⼀部分。
Docker 公司,位于旧⾦⼭,是整个 Moby 开源项⽬的维护者。Docker 公司还提供包含⽀持服务的商业版本的 Docker。
Docker公司
如何查询sql语句卡Docker 公司位于旧⾦⼭,由法裔美籍开发者和企业家 Solumon Hykes 创⽴,其标志如下图所⽰。
有意思的是,Docker 公司起初是⼀家名为 dotCloud 的平台即服务(Platform-as-a-Service, PaaS)提供商。
底层技术上,dotCloud 平台利⽤了 Linux 容器技术。为了⽅便创建和管理这些容器,dotCloud 开发了⼀套内部⼯具,之后被命名
为“Docker”。Docker就是这样诞⽣的!js中join是什么意思
2013年,dotCloud 的 PaaS 业务并不景⽓,公司需要寻求新的突破。于是他们聘请了 Ben Golub 作为新的 CEO,将公司重命名
为“Docker”,放弃dotCloud PaaS 平台,怀揣着“将 Docker 和容器技术推向全世界”的使命,开启了⼀段新的征程。
如今 Docker 公司被普遍认为是⼀家创新型科技公司,据说其市场价值约为 10 亿美元。Docker 公司已经通过多轮融资,吸纳了来⾃硅⾕的⼏家风投公司的累计超过 2.4 亿美元的投资。
⼏乎所有的融资都发⽣在公司更名为“Docker”之后。
提⽰:“Docker”⼀词来⾃英国⼝语,意为码头⼯⼈(Dock Worker),即从船上装卸货物的⼈。
Docker 运⾏时与编排引擎
多数技术⼈员在谈到 Docker 时,主要是指 Docker 引擎。
Docker 引擎是⽤于运⾏和编排容器的基础设施⼯具。有 VMware 管理经验的读者可以将其类⽐为 ESXi。
ESXi 是运⾏虚拟机的核⼼管理程序,⽽ Docker 引擎是运⾏容器的核⼼容器运⾏时。
其他 Docker 公司或第三⽅的产品都是围绕 Docker 引擎进⾏开发和集成的。
如下图所⽰,Docker 引擎位于中⼼,其他产品基于 Docker 引擎的核⼼功能进⾏集成。
java map遍历删除值
Docker 引擎可以从 Docker ⽹站下载,也可以基于 GitHub 上的源码进⾏构建。⽆论是开源版本还是商业版本,都有 Linux 和 Windows 版本。
Docker 引擎主要有两个版本:企业版(EE)和社区版(CE)。
每个季度,企业版和社区版都会发布⼀个稳定版本。社区版本会提供 4 个⽉的⽀持,⽽企业版本会提供 12 个⽉的⽀持。
社区版还会通过 Edge ⽅式发布⽉度版。
从 2017 年第⼀季度开始,Docker 版本号遵循 YY.MM-xx 格式,类似于 Ubuntu 等项⽬。例如,2018 年 6 ⽉第⼀次发布的社区版本为 18.06.0-ce。
注:2017 年第⼀季度以前,Docker 版本号遵循⼤版本号.⼩版本号的格式。采⽤新格式前的最后⼀个版本是 Docker 1.13。
Docker开源项⽬(Moby)
“Docker”⼀词也会⽤于指代开源 Docker 项⽬。其中包含⼀系列可以从 Docker 官⽹下载和安装的⼯具,⽐如 Docker 服务端和Docker 客户端。
不过,该项⽬在 2017 年于 Austin 举办的 DockerCon 上正式命名为 Moby 项⽬。
由于这次改名,GitHub 上的 docker/docker 库也被转移到了 moby/moby,并且拥有了项⽬⾃⼰的 Logo,如下图所⽰。
Moby 项⽬的⽬标是基于开源的⽅式,发展成为 Docker 上游,并将 Docker 拆分为更多的模块化组件。
Moby 项⽬托管于 GitHub 的 Moby 代码库,包括⼦项⽬和⼯具列表。核⼼的 Docker 引擎项⽬位于 GitHub 的 moby/moby,但是引擎中的代码正持续被拆分和模块化。
作为⼀个开源项⽬,其源码是公开可得的,在遵循 Apache 协议 2.0 的情况下,任何⼈都可以⾃由地下载、贡献、调整和使⽤。
如果查看项⽬的提交历史,可以发现其中包含来⾃如下公司的基础技术:红帽、微软、IBM、思科,以及 HPE。此外,还可以看到⼀些并⾮来⾃⼤公司的贡献者。
多数项⽬及其⼯具都是基于 Golang 编写的,这是⾕歌推出的⼀种新的系统级编程语⾔,⼜叫 Go 语⾔。使⽤ Go 语⾔的读者,将更容易为该项⽬贡献代码。
Mody/Docker 作为开源项⽬的好处在于其所有的设计和开发都是开放的,并摒弃了私有代码闭源开发模式下的陈旧⽅法。
因此发布过程也是公开进⾏的,不会再出现某个秘密的版本提前⼏个⽉就宣布要召开发布会和庆功会的荒唐情况。
Moby/Docker 不是这样运作的,项⽬中多数内容都是开放并欢迎任何⼈查看和作出贡献的。
Moby 项⽬以及更⼴泛的 Docker 运动⼀时间掀起了⼀波热潮。GitHub 上已经有数以千计的提交请求(pull request),以及数以万计的基于容器化技术的项⽬了,更不⽤说 Docker Hub 上数⼗亿的镜像下载。
Moby 项⽬已经给软件产业带来了翻天覆地的变化。
这并⾮妄想,Docker 已经得到了⼴泛的应⽤!
容器⽣态
Docker 公司的⼀个核⼼哲学通常被称为“含电池,但可拆卸”(Batteries included but removable)。
意思是许多 Docker 内置的组件都可以替换为第三⽅的组件,⽹络技术栈就是⼀个很好的例⼦。
Docker 核⼼产品内置有⽹络解决⽅案。但是⽹络技术栈是可插拔的,这意味着 Docker 内置的⽹络⽅案可以被替换为第三⽅的⽅案。许多⼈都会这样使⽤。
早期的时候,经常出现第三⽅插件⽐ Docker 提供的内置组件更好的情况。然⽽这会对 Docker 公司的商业模式造成冲击。毕竟,Docker 公司需要依靠盈利来维持基业长青。
因此,“内置的电池”变得越来越好⽤了。这也导致了⽣态内部的紧张关系和竞争的加剧。
简单来说,Docker 内置的“电池”仍然是可插拔的,然⽽越来越不需要将它们移除了。
尽管如此,容器⽣态在⼀种良性的合作与竞争的平衡中还是得以繁荣发展。
在谈及容器⽣态时,⼈们经常使⽤到诸如“co-opetition”(意即合作与竞争,英⽂中 co-operation 与 competition 合并的词)
与“frenemy”(英⽂中朋友 friend 与敌⼈ enemy 合并的词)这样的字眼。这是⼀个好现象!因为良性的竞争是创新之母。
开放容器计划
如果不谈及开放容器计划(The Open Container Initiative, OCI)的话,对 Docker 和容器⽣态的探讨总是不完整的。下图所⽰为 OCI 的Logo。
创建网站和主页
OCI 是⼀个旨在对容器基础架构中的基础组件(如镜像格式与容器运⾏时)进⾏标准化的管理委员会。
同样,如果不谈历史的话,对 OCI 的探讨也是不完整的。
⼀个名为 CoreOS 的公司不喜欢 Docker 的某些⾏事⽅式。因此它就创建了⼀个新的开源标准,称作“appc”,该标准涉及诸如镜像格式和容器运⾏时等⽅⾯。
此外它还开发了⼀个名为 rkt(发⾳“rocket”)的实现。
两个处于竞争状态的标准将容器⽣态置于⼀种尴尬的境地。
这使容器⽣态陷⼊了分裂的危险中,同时也令⽤户和消费者陷⼊两难。虽然竞争是⼀件好事,但是标
准的竞争通常不是。因为它会导致困扰,降低⽤户接受度,对谁都⽆益。
考虑到这⼀点,所有相关⽅都尽⼒⽤成熟的⽅式处理此事,共同成⽴了 OCI ——⼀个旨在管理容器标准的轻量级的、敏捷型的委员会。
OCI 已经发布了两份规范(标准):镜像规范和运⾏时规范。
简述linux发展史提到这两项标准时,经常⽤到的⽐喻就是铁轨。它们就像对铁轨的尺⼨和相关属性达成⼀致,让所有⼈都能⾃由地建造更好的⽕车、更好的车厢、更好的信号系统、更好的车站等。
只要各⽅都遵循标准就是安全的。没⼈会希望在铁轨尺⼨问题上存在两个相互竞争的标准!
typename公平地说,这两个 OCI 规范对 Docker 的架构和核⼼产品设计产⽣了显著影响。Docker 1.11 版本中,Docker 引擎架构已经遵循 OCI 运⾏时规范了。
到⽬前为⽌,OCI 已经取得了不错的成效,将容器⽣态团结起来。然⽽,标准总是会减慢创新的步伐!尤其是对于超快速发展的新技术来说更是如此。
这在容器社区引起了热烈的讨论。这应该算是好事!容器技术正在重塑世界,⾛在技术前列的⼈们有热情、有想法,这很正常。
OCI 在 Linux 基⾦会的⽀持下运作,Docker 公司和 CoreOS 公司都是主要贡献者。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。