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

news2025/1/15 13:06:08

一、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 Editiondocker-ce 中的组件来自于 mobycontainerd 等其他项目。


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

B. 软件需要共享

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


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

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


2、Docker 解决方案

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

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

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

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

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

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1968361.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

理想发周榜,不是新能源市场的原罪

余华在他的小说《在细雨中呼喊》曾写过这么一段话: “仓廪实而知礼节,衣食足而知荣辱”,在物质需求得到满足以前,精神文明的发展难免会有所滞后。所以,贫穷,不是原罪。 同样的,在如今的新能源…

常见API(一)

API(Application Programming interface):应用程序编程接口,别人写好的程序,直接拿来调用。主要是为了灵活解决需求。这次只先简单学习了一下String和ArrayList两个。 1.包 包是分门别类管理程序的,类似于文件夹。别人写好的包通常都在别人的…

Android Studio2024安装教程

软件介绍 Android Studio 是谷歌推出的一个Android集成开发工具。 基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工具用于开发和调试。 软件下载 https://docs.qq.com/doc/DR0hWZ0l4aGtVTmVr软件安装 1、双击运行安装文件 2、…

双模幂运算Java

题目: 给你一个下标从 0 开始的二维数组 variables ,其中 variables[i] [ai, bi, ci, mi],以及一个整数 target 。 如果满足以下公式,则下标 i 是 好下标: 返回一个由 好下标 组成的数组,顺序不限 。 …

RK3568平台(触摸篇)双屏异触调试

一.现象 现象:准备两块主屏都接触摸框,A屏的HDMIOUT外接B屏的HDMIIN,用手触摸A屏,发现A屏没有触摸,A屏幕的触摸现象在B屏那边。 现要求:用手触摸A屏,A屏要有现象,不能现象在B屏那边…

《Transformer Scale Gate for Semantic Segmentation》CVPR2023

摘要 论文提出了一种名为Transformer Scale Gate(TSG)的模块,用于优化在语义分割任务中多尺度上下文信息的编码。现有的基于Transformer的分割模型在组合不同尺度的特征时没有进行选择,这可能导致次优尺度的特征降低分割的准确性…

【网络】UDP协议——传输层、端口号、UDP协议、UDP协议端格式、UDP的特点、UDP的缓冲区、UDP使用注意事项

文章目录 Linux网络1. 传输层1.1 端口号1.2 UDP协议1.2.1 UDP协议端格式1.2.2 UDP的特点1.2.3 UDP的缓冲区1.2.3 UDP使用注意事项1.2.5 基于UDP的应用层协议 Linux网络 1. 传输层 传输层:是 OSI 模型和 TCP/IP 模型中的重要层次,位于网络层之上、应用层…

推荐一个gpt镜像网站

包含现在主流的大语言模型 一个网站,各种模型随意切换和体验 集成多种功能 不止于对话,更有文生图,思维导图等多种功能 支持多个平台 除了网页版,更有安卓, mac os, ipad os等多个平台,随时随地方便同步和使用 …

【大模型】【智能体】agent导论

基本的图像 react: prompt:

营收保持增长,汽车之家掌握了什么“流量密码”?

从汽车之家新鲜出炉的“成绩单”来看,汽车行业的流量生意依然红火。 财报显示,2024年第二季度,汽车之家实现总营收18.7亿元,同比增长2.2%;经调整净利润5.72亿元,经调整净利润率达30.6%。其中,在…

MySQL:管理和操作数据表

数据表是数据库的重要组成部分,每一个数据库都是由若干个数据表组成的。没有数据表就无法在数据库中存放数据。MySQL数据表的管理和操作是数据库管理员和开发人员日常工作中不可或缺的一部分。 创建数据表 CREATE 创建数据表的过程是规定数据列的属性的过程&#…

数字图像处理 --- 图像的离散余弦变换(python实战)

图像的离散余弦变换(python实战) 这篇文章是我上两篇文章的延续,主要是觉得前面的文章太长了,所以把关于图像的DCT变换部分单独拎出来放到这里,这两篇文章分别是: 1,一维DCT 数字信号处理 --- 一维离散余弦变换(pyth…

搜维尔科技:【研究】Haption的自动识别技术

Real-Time Interaction for Delmia Human RTID Human “Real-Time Interaction for Delmia Human” 是个附加在Delmia V5™上的软件,它能让使用者使用数字人体模型在虚拟环境中进行实时互动仿真 在Delmia 中使用RTI ,使用者可以模拟进行以下研究: 1. 可…

table car vs. table cars:数据库命名用单数还是复数?

数据库的命名方式已经形成了许多共识,比如全部小写、下划线分隔、使用标准缩写等;其中就包括「使用单数名词」。 用户 jonr 在 reddit 网的程序员笑话(ProgrammerHumor)社区发了一篇帖子,调侃这些数据库命名方式的共识…

突破csdn每日15篇文章限制的方法

买一个vip年会员248元,就可以了.......

Linux-3:Shell编程——基础语法(0-50%)

目录 前言 一、变量 1.定义变量 2.使用变量 3.修改变量 4.将命令的结果赋值给变量 5.只读变量 6.删除变量 二、传递参数 三、字符串 1.字符串举例 2.统计字符串长度 3.字符串拼接 4.截取字符串 总结 前言 Shell是一种程序设计语言。作为命令语言,它…

算法学习day26

滑动窗口系列题 一、替换后的最长重复子串 给你一个字符串 s 和一个整数 k 。你可以选择字符串中的任一字符,并将其更改为任何其他大写英文字符。该操作最多可执行 k 次。 在执行上述操作后,返回 包含相同字母的最长子字符串的长度。 输入&#xff1a…

MySQL--MySQL函数

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 MySQL函数 一、MySQL函数简介 函数表示对输入参数值返回一个具有特定关系的值,MSOL提供了大量丰富的函数,在进行数据库管理以…

CTFHub——XSS全系列

1、反射型: 发现为表单式,猜测哪个可能存在注入漏洞,分别做测试注入发现name框存在xss漏洞 输入发现有回显但不是对方cookie,参考wp发现要用xss线上平台 将xss平台测试语句注入,将得到的url编码地址填入url框&#xf…

Mongodb集合操作

文章目录 1、进入容器2、如果数据库不存在,则创建数据库,否则切换到指定数据库3、在 MongoDB 中,创建集合不是必须操作。当你插入一些文档时,MongoDB 会自动创建集合。4、查看数据库列表5、查看集合6、显示创建集合7、删除集合 1、…