【Docker】认识 Docker(版本、官方网站、架构、生态)

炫酷的伊莉娜 2024-09-19 10:07:07 阅读 65

一、Docker 版本

Docker 发展过程中衍生了以下版本,目前我学习和使用提到的版本是 docker-ce。


1、lxc

lxc 是最早的 linux 容器技术,早期版本的 docker 直接使用 lxc 来实现容器的底层功能。虽然使用者相对较少,但 lxc 项目仍在持续开发演进中。


2、libcontainer

docker 从 0.9 版本开始自行开发了 libcontainer 模块来作为 lxc 的替代品实现容器底层特性,并在 1.10 版本彻底去除了 lxc。

在 1.11 版本拆分出 runc 后,libcontainer 也随之成为了 runc 的核心功能模块,runc 后续变成了容器标准。


3、moby

官方网站:Moby (mobyproject.org)

moby 是 docker 公司发起的开源项目,其中最主要的部分就是同名组件 moby,事实上这个 moby 就是 dockerd 目前使用的开源项目名称,docker 项目中的 engine(dockerd)仓库现在就是从 moby 仓库 fork 而来的,使用 containerd 作为运行时标准。


4、docker-ce

官方网站:https://www.docker.com/pricing/

docker 的开源版本,CE 指 Community Edition。docker-ce 中的组件来自于 moby、containerd 等其他项目。


5、docker-ee

官方网站:https://www.docker.com/pricing/

docker 的收费版本,EE 指 Enterprise Edition。其基础组件来源和 docker-ce 是一样的,但附加了一些其他的组件和功能。


二、Docker 官方网站

docker 官网:www.docker.com


三、Docker 架构

1、官方架构

Docker 使用客户端-服务器(C/S)架构模式,使用远程 API 来管理和创建 Docker 容器。

Docker 容器通过 Docker 镜像来创建。


(1)Docker 仓库(Registry)

Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。Docker Hub 供了庞大的镜像集合供使用。


(2)Docker daemon

Docker daemon 是服务器组件,是 Docker 最核心的后台进程,也把它称为守护进程。


(3)Docker 客户端(Client)

Docker 客户端通过命令行或者其他工具使用 Docker API 与 Docker 的守护进程通信。


(4)Docker 主机(Host)

一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。


(5)Docker 镜像(Images)

Docker 镜像是用于创建 Docker 容器的模板。


(6)Docker 容器(Container)

容器是独立运行的一个或一组应用。  


2、生活案例

前面的几个概念可能比较难理解,这里列举个有关生活的案例:以一家人去旅游入住酒店为例。

我们一家人和朋友一块旅游去酒店,我们就是 Docker Client。到酒店办理入住,办理退房,缴费需要酒店前台提供各种服务,酒店前台就是我们的 Docker Daemon(Docker 的核心服务端)。酒店是建在美丽的海边,酒店的宅基地和大楼就是我们实际的物理服务器或者虚拟服务器,也就是 Docker Host。酒店就 1000 多个房间,每个房间里面不一样,有标间、大床房、家庭房等,这就是 Registry(Docker 镜像仓库)。酒店的标准的房间豪华大床房和双人标间,这个就是 Images(Docker 镜像),我们客户是没有办法修改的。我们办理完入住手续后,住进了一个豪华大床房,然后把行李、个人物品带到了一个具体的房间号,比如 9527,那么这个房间就可以给我们使用了,朋友也开了一间豪华大床房,虽然他的豪华大床房和我们的一样,当时我们携带的物品,我们的洗漱时间,睡觉时间都不一样,这个就是容器 Docker Container。容器的销毁,也就是我们一周后旅游结束了,搬出了酒店,酒店把我们的房间恢复了镜像原来的样子。


四、Docker 生态

1、新时代软件诉求

Docker 为什么要设计镜像,然后又搭建个 Docker Hub,搞个镜像仓库呢?

来看下现在的时代发生了什么:

(1)数据量疯狂增长

随着物联网、边缘计算等智能终端设备不断普及,受到来自物联网设备信号、元数据、娱乐相关数据、云计算和边缘计算的数据增长的驱动,全球数据量呈现加速增长。

根据 IDC 分布的《数据时代 2025》预测,全球数据量将从 2018 年的 33ZB 增至 2025 年的 175ZB,增长超过 5 倍;中国平均增速快于全球 3%,预计到 2025 年将增至 48.6ZB,占全球数据圈的比例由 23.4% 提升至 27.8%。其中,中国企业级数据量将从 2015 年占中国数据量的 49% 增长到 2025 年的 69%。


(2)处理能力快速增加

腾讯云全球服务器数量 100w+,数据量 EB+;2020 年阿里云:在全国已建成 5 大超级数据中心,阿里云在全球 22 个地域部署了上百个数据中心,服务器的总规模数已经接近 200 万台。

某省疾控中心疫苗预约系统、全员核酸检测系统、健康码系统共 300 余台服务器,并为核酸检测系统快速扩容计算和存储资源。


(3)软件需求爆发式增长

A. 软件发布频繁

研发模式从瀑布开发演变为敏捷开发,原来 3 个月上一次新功能,现在两周一次,而开发过程中我们也经常遇到需要修改需求,然后变更再发布的情况。 软件上线有问题需要快速回滚,对软件有着极强的版本管理和回滚诉求。


B. 软件需要共享

软件的研发人员、研发公司在设计、研发好一款软件的时候,如何方便的共享给他人,而又能快速的使用起来。


C. 环境搭建复杂,技术种类繁多

每个项目组使用的语言不一样,需要不同的环境,每个都得搞一套。每次都要从 yum 开始一个个完成部署安装,每次都有各种奇怪的问题,运维成本很高。


2、Docker 解决方案

云时代需要我们针对这些诉求有一套针对的解决方案。

要处理海量的数据时,该如何处理呢?

购买大量的服务器,并研发对应软件。

开发的需求需要频繁的变更上线,如何才能将修改的代码快速的分发到几百或者几千台服务器呢?如何共享软件呢?

搞一个中心仓库,让各个服务器去下载软件包并安装,所以 CentOS 搞了 yum 仓库,docker 设计了镜像仓库,docker hub 是公共的托管仓库。

软件设计好以后怎么快速安装启动,出现问题时回滚呢?

将 docker 需要的所有信息设计一套软件格式,把所有的依赖搞进去,并打上版本标签,这样不会换一个服务器各种问题,所以 Docker 设计了镜像。

不同的开发环境如何搭建呢?

docker 设计了镜像来应对,镜像里面存放了需要运行的环境,就像我们的 iPhone 内置 IOS,华为 Mate 50 内置鸿蒙一样,一条命令就可以完成某个环境的搭建。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。