Docker生态系统:常规组件简介

Docker生态系统组件解析:从dockerd到runc的分层架构 容器技术本质是操作系统内核能力(namespaces、cgroups、overlayfs)的封装与编排。Docker并非单一工具,而是由dockerd、containerd、runc、buildkit、docker-compose和registry构成的标准化分层系统——runc作为OCI兼容的执行器调用内核接口,containerd作为工业级运行时管理生命周期,dockerd作为用户入口代理API请求。这种分层设计保障了故障隔离、可调试性与跨平台一致性,支撑微服务部署、CI/CD构建和本地开发环境标准化等 阅读详情

Docker生态系统:常规组件简介

提供:ZStack社区

系列教程

本教程为《Docker生态系统》系列全五篇中的第一篇。

内容简介

容器技术旨在通过一种可移植且可预测的方式实现应用程序的分发与部署。为实现这一目标,容器技术对各组件进行打包,并将其关联为一套标准化、隔离性的轻量级处理环境,这就是所谓“容器”。目前已经有众多企业倾向于在应用程序与服务设计当中考量这种面向分布式系统的便捷部署方式,从而保证该系统能够轻松实现扩展,同时及时发现设备与应用故障问题。作为一套着眼于简化与标准化部署需求的容器方案,Docker的广泛普及极大推动了上述设计与管理思路的实现。事实上,这套分布式容器管理生态系统也得到了大量软件开发商的认同与采纳。

Docker与容器化

Docker是目前最具人气的容器化软件选项。尽管市面上还存在着其它一些容器化系统,但Docker不仅让容器的创建与管理变得更为轻松,同时亦集成有大量其它开源项目。

通过这张图片,大家可以了解到容器在主机系统中的实际作用。容器负责隔离各类不同应用程序,并利用经过Docker抽象化处理的操作系统资源。在右侧的分解图中可以看到,容器系统亦可“分层”构建,其中多套容器共享同一底层,从而尽可能降低资源使用量。

Docker的主要优势包括:

  • 轻量化资源占用:相较于虚拟机所采用的整体操作系统,容器系统能够以进程级别实现隔离并使用同一套主机内核。
  • 可移植性: 容器化应用程序的全部关联性都被绑定在该容器之内,这就使其能够轻松被迁移至其它Docker主机上并继续正常运行。
  • 可预测性: 主机自身并不关注容器之内运行的实际内容,而容器亦不关注其究竟运行在何种硬件平台之上。因此接口具有标准化特性,交互亦可预测。

一般来讲,着眼于Docker进行应用程序或者服务设计时,我们最好将功能拆分成多个单独容器之内,这就是我们常说的面向服务架构。通过这种方式,大家能够轻松实现各独立组件的后续规模伸缩与更新。正是由于这种灵活性,人们才乐于使用Docker用于应用或服务的开发以及部署。

欲了解更多Docker容器化应用相关的信息,请点击此处进行查看。

服务发现与全局配置存储

服务发现属于整体策略中的组成部分,旨在确保容器部署具备可扩展性与灵活性。在服务发现机制的帮助下,容器能够在无需管理员介入的前提下了解其当前运行环境,具体包括发现其所需交互之对象组件的连接信息,甚至可进行自我注册以通知其它协作工具。这些工具通常作为全局分布式配置存储机制,负责分发配置设定以保证基础设施之上各组件的正常执行。

在上图当中,大家可以看到示例流程内的应用程序向发现服务系统注册其连接信息。注册完成后,其它应用即可查询该发现服务,从而了解如何与该已注册应用进行对接。

这些工具通常采取简单的键-值存储机制,并立足于集群化环境分布在各主机当中。总体而言,键-值存储提供HTTP API以访问并设置各相关值。其中一些还包含其它安全机制,例如加密条目或者访问控制等等。这种分布式存储方案对于管理集群化Docker主机至关重要,同时亦保证了其为各新容器提供自我配置信息这一重要能力。

服务发现存储机制的部分作用包括:

  • 允许应用程序容纳其与服务对接所必需的数据。
  • 允许服务出于以上目的对自身连接信息进行注册。
  • 提供一个全局可访问位置以存储任意配置数据。
  • 根据任意集群管理软件的需要,存储集群成员相关信息。

目前人气较高的服务发现工具与相关项目包括:

  • etcd: 服务发现/全局分布式键-值存储方案
  • consul: 服务发现/全局分布式键-值存储方案
  • zookeeper: 服务发现/全局分布式键-值存储方案
  • crypt: 用于对etcd条目进行加密
  • confd: 观察键-值存储变更,并利用新值触发服务重新配置

欲了解更多与Docker服务发现相关的信息,请点击此处阅读我们的指南文章。

网络工具

容器化应用程序采用面向服务设计,旨在将既有功能拆分为众多组件。这种作法虽然能够简化管理与规模伸缩工作,但却要求我们根据功能及可靠性对不同组件间的网络连接进行细化处理。Docker本身即提供必要的基础性网络结构,帮助我们实现容器到容器以及容器到主机等通信需求。

Docker的原生网络功能提供两种对不同容器进行hook的机制。其一为显示容器端口并将其映射至主机系统,从而实现外部路由。大家可以选定映射指向的主机端口,或者允许Docker为其随机选定一个未使用的高位端口。这种处理方式较为常见,适合大多数容器用例。

另一种方法是允许容器利用Docker的“链接”进行通信。一套链入容器能够获取与其相对应的连接信息,我们通过配置要求其监测相关变量以实现自动连接。在这种情况下,同一主机上的不同容器将实现彼此通信,而不必了解服务被指定的具体端口或者地址。

这种基础网络层级适用于单一主机或者封闭管理环境。然而,Docker生态系统也提供多种其它项目以扩展并满足运维人员及开发人员对网络功能的需求。目前常用的网络扩展功能包括:

  • 覆盖网络以简化并统一多主机间各地址空间。
  • 虚拟专用网络,旨在提供不同组件之间的安全通信机制。
  • 为每台主机或者每款应用程序分配子网。
  • 建立macvlan接口以实现通信。
  • 为容器配置定制化MAC地址以及网关等。

而当前人气较高的Docker网络改进项目包括:

  • flannel:覆盖网络并为每台主机提供独立子网。
  • weave: 覆盖网络并利用全部容器建立单独网络。
  • pipework: 高级网络工具包,用于实现更多高级网络配置能力。

欲了解更多与Docker相关之网络实现方法,请点击此处进行查看。

调度、集群管理与编排

构建集群化容器环境的另一大必要组件就是调度器。调度器负责在可用主机之上启动各容器系统。

上图所示为一套经过简化的调度决策流程。请求通过API或者管理工具进行传递。在这里,调度器会评估请求条件以及可用主机状态。在示例当中,其从分布式数据存储/发现服务(如上所述)中提取容器密度信息,从而将新应用部署在运行强度最低的主机之上。

这一主机选择过程正是调度器的核心作用之一。通常来讲,其还能够为管理员提供控制选项,从而帮助特定容器以自动化方式实现这项任务。这部分选项包括:

  • 将当前容器调度至另一给定容器运行所在之主机。
  • 确保该容器不被部署至另一给定容器运行所在之主机。
  • 将容器部署至标签或者元数据与要求相匹配的主机之上。
  • 将容器部署至运行强度最低的主机之上。
  • 将该容器运行于集群中的每一台主机之上。

调度器负责在相关主机上进行容器载入,同时启动、停止及管理该流程的生命周期。

由于调度器必须与群组中的每台主机进行交互,因此我们还需要引入集群管理功能。这些功能将保证调度器能够获取到各集群成员的信息,同时执行必要的管理任务。在这种情况下,编排工具闪亮登场并负责将容器调度与主机管理工作加以结合。

目前的高人气调度器与集群管理工具包括:

  • fleet: 调度器与集群管理工具。
  • marathon: 调度器与服务管理工具。
  • Swarm: 调度器与服务管理工具。
  • mesos: 用于承载抽象服务,而抽象服务则负责合并主机资源以供调度器使用。
  • kubernetes: 提供先进调度器功能以实现容器群组管理。
  • compose: 用于创建容器群组的容器编排工具。

欲了解更多与Docker内基础调度、容器、群组以及集群管理软件相关的信息,请点击此处进行查看。

结论

到这里,大家应该已经对Docker生态系统当中的各类常见软件及其功能有所了解了。另外,我们也分享了多种软件管理、设计以及部署策略,相信能够充分满足各位的可扩展性需求。有了这样的认知储备,大家将能够执行复杂的应用部署,并凭借容器技术的出色灵活性应对实际场景下不断变化的操作要求。

本文来源自DigitalOcean Community。英文原文:The Docker Ecosystem: An Introduction to Common Components By Justin Ellingwood

翻译:diradw

SpringBoot开发部署(热部署+常规部署+Docker部署) 项目部署 阅读详情

相关推荐

Docker生态系统五大核心组件深度解析

Docker并非单一工具,而是基于容器技术构建的标准化软件交付生态系统。其底层依托Linux内核的cgroups与namespaces实现进程隔离,通过镜像分层、内容寻址与UnionFS机制保障可复现性与高效分发;容器作为运行时实例,依赖Docker Engine(含daemon、API与CLI)统一调度,并由Registry完成镜像的可信存储与分发,再经Compose等编排工具实现多服务协同。该体系支撑CI/CD自动化、环境一致性与云原生演进,广泛应用于微服务部署、测试环境快速构建及混合云迁移等工程实践场

359

Flex组件-常规组件

Flex组件-常规组件 1.Button: Button组件是一个常用的矩形按钮,最普通的事件响应是鼠标单击。该组件可以有一个文字的标签和一个图标。 2.ButtonBar: ButtonBar组件可定义一组具有普通外观和导航的逻辑上相关的按压按钮,这组按钮可以是水平的也可以是垂直的。 3.CheckBox: CheckBox组件包含一个可选标签和一个小方框,该方框内可以包含/不包含

bluelilyabc的专栏 1252

Anolis 8系统下,手把手搞定Nginx、Redis、JDK8和Tomcat9的完整安装与配置(含开机自启)

本文详细介绍了在Anolis 8系统下搭建Java Web全栈环境的完整流程,包括JDK8、Tomcat9、Nginx和Redis的安装与配置,并实现系统级服务管理。通过深入每个组件的配置细节,揭示服务间的协同关系,最终打造一个生产级可用的标准化环境。

weixin_42556197的博客 160

Docker组件

Docker初步了解

流浪猫 1435

保姆级教程:用杰理701N可视化SDK搞定ANC降噪配置(从工具到代码全流程)

本文提供了一份详细的杰理701N可视化SDK配置ANC降噪功能的教程,涵盖从开发环境搭建到代码集成的全流程。通过图形化工具和代码示例,帮助开发者快速掌握ANC参数配置技巧,优化降噪效果,解决常见问题。

weixin_30616969的博客 452

C#报表,使用微软rdlc模板,生成Excel, PDF, Word, Image文件,使用自定义对象做数据集不连接数据库

我项目是用vs2017 建的,.NET farmwork 4.7.2 这种报表可以用于任何模式的应用,web,桌面,因为这只是生成一个文件或者文件流 步骤比较详细啰嗦,其中有讲到rdlc怎么新建设计,如果已经会设计rdlc了的可以直接跳到底部看代码的执行结果, 底部还有源码下载链接,百度盘 首先控制台安装报表包 新建rdlc 报表 建立rdlc里要用的数据模型 模型建完,或者修改都要重新...

qq_35955916的博客 5204

Docker——Docker核心组件原理

本章要对Docker命令的运行机制进行讲解。通过下图可以得知,`Docker` 在运行时分为 `Docker 引擎(服务端守护进程)` 和 `客户端工具`,我们日常使用各种 `docker 命令`,其实就是在使用 `客户端工具` 与 `Docker 引擎` 进行交互。

庄小焱 1801

自动换挡频率计的设计精髓:如何用数字电路优雅地解决量程切换难题

本文深入解析了自动换挡频率计的设计精髓,重点探讨如何利用数字电路优雅解决量程切换难题。通过74系列通用数字集成电路构建智能化的自动量程切换系统,详细介绍了状态检测、决策逻辑和档位执行等核心模块的设计方法,并对比了不同实现方案的优劣,为电子测量领域的工程师提供了实用的硬件设计参考。

weixin_27869497的博客 408

第三章 Docker 核心组件

镜像是由许多层的文件系统叠加构成的,最下面是一个引导文件系统bootfs,第二层是一个 root 文件系统 rootfs,root 文件系统通常是某种操作系统,比如 centos、Ubuntu,在 root 文件系统之上又有很多层文件系统,这些文件系统叠加在一起,构成 docker 中的镜像;一种是类似 centos 这样的基础镜像,被称为基础或根镜像。Docker 提供了一个非常简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用。

weixin_59334478的博客 1293

scannet数据集下载文件

scannet数据集下载文件 由于大家会申请scannet数据集,审批比较慢,我将下载的文件里面的内容贴出来,大家可以复制放进py文件中,运行就可以下载 ps:别再私信要数据集了,这个自己下载,如果光三维数据的话,还是很快的,当然如果路由器翻了墙的话,下载会更快。 #!/usr/bin/env python # Downloads ScanNet public data release # Run with ./download-scannet.py (or python download-scannet.

weixin_40766438的博客 9234

【人工智能】AI 智能体驾驭工程(Harness Engineering)全解析

OpenAI将Harness定义为让Agent能完成有用工作的系统工程,Harness Engineering则是持续设计、实现、迭代这套系统的方法论;Anthropic将其概括为「让模型真正成为可靠Agent的基础设施」;Martin Fowler/Thoughtworks则将其定义为「控制Agent各层循环的规格、质量检查与工作流指导体系」。强大的AI模型是一匹爆发力极强的烈马;Prompt Engineering是「对马喊话的技巧」,Context Engineering是「给马看的地图」;

奶爸的编程之路,也就一周冷个三天 5258

Docker部署安装及常规操作

Docker概述 1、Docker概念 Docker是一个开源的应用容器引擎,让开发者可以打包它们的应用以及依赖包到一个可一直的镜像中,然后发布到任何流行的Linux或Windows机器上,也可以实现虚拟化。容器是完全使用沙箱机制,Docker对进程之间相互隔离,相互之间不会有任何的接口,对底层环境无任何要求 2、设计的目标 提供简单的应用程序打包工具 开发人员和运维人员职责逻辑分离 多环境保...

weixin_45682995的博客 1万+

Vue2 - 详细实现网页 “开启录音并生成音频文件,上传到服务器效果“,浏览器录制外部音频调用麦克风并传到后端,兼容全部浏览器、支持 PC 网页或手机 H5 网页、可本地播放试听(详细示例运行代码)

vue,nuxt,uniapp,网页网站,麦克风,网页录音,MediaRecorder,浏览器录音,移动端h5网页,手机端录音,web网页录音,recorder-core官方文档,Recorder,非https怎么本地录音,录音报错失败,录音后怎么播放音频,如何获取录音mp3文件,解决一直不提示麦克风权限,小白详细教程,实时录音,调用浏览器麦克风录音,浏览器不兼容,wav,mp3,vue怎么实现网页录音呢,vue2网页录音并上传到服务器,web如何实现录制音频,vue网页录音,音频录制播放和上传服务器,vu

🏆 前端领域优质创作者 6005

Docker生态系统系列之一:常用组件介绍

【编者的话】本篇文章是介绍Docker生态系统的第一篇,不仅从概念上介绍了容器化、服务发现和全局配置存储、网络工具、调度、集群管理和编排这几部分内容,而且配以清晰易懂的例子进行讲解说明,非常值得读者称赞。Docker是现在使用最多的容器化软件。与其它已经存在的容器化系统相比,Docker可以更加简单的创建和管理容器,并与其它开源软件集成。 简介 容器化是一个以可移植和可预测

Daemon的专栏 1628

物联网设备数据是如何流转的:基于EMQX与TDengine的前后端分离项目实践

背景 在我写了TDengine极简实战:从采集到入库,从前端到后端,体验物联网设备数据流转这篇文章后,不少读者朋友评论、私信说可不可以提供代码参考学习下,那必须是可以的。那篇文章主要介绍了数据采集、数据传输、数据转发、数据解析、数据存储、数据查询、数据呈现、数据导出、消息推送的物联网设备数据流程过程,作为体验 TDengine 的极简实战项目,没引入过多的业务设计(复杂功能)以及异步解耦设计(消息中间件)。 在整理代码的过程中,我发现虽然整个项目并不复杂,但是涉及到的技术点较多,有必要对关键的组件进行说明

Heartsuit的博客 9412

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Docker组件详解:核心技术与架构分析

Docker作为一种容器化技术,已经彻底改变了软件的开发、交付和部署方式。要充分理解和利用Docker的强大功能,我们需要深入了解其核心组件以及它们如何协同工作。本文将详细介绍Docker的主要组件、架构设计以及它们之间的关系。

pp1981002445的博客 1762

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Docker简介

本文详细介绍了 Docker,包括其概念定义,指出它是开源的应用容器引擎,能构建、部署和管理容器化应用程序。还阐述了主要组件如 Docker 引擎、镜像、容器、Dockerfile、仓库及网络和存储组件等。讲解了容器原理涉及镜像加载、隔离机制、资源限制、分层文件系统、容器启动、网络配置、数据管理和生命周期管理等。对比了 Docker 容器与 VM 的优缺点,提到 Docker 轻量、快速启动、高效利用资源且易于迁移,但隔离性相对较弱;VM 强隔离性且对各种系统和应用兼容性好,但资源消耗大、启动慢且部署不够灵

学徒心 2287

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

《docker基础篇:8.Docker常规安装简介》包括:docker常规安装总体步骤、安装tomcat、安装mysql、安装redis

《docker基础篇:8.Docker常规安装简介》包括:docker常规安装总体步骤、安装tomcat、安装mysql、安装redis

刘大猫 960

Docker常规安装简介

安装tomcat: docker hub上面查找tomcat镜像: docker search tomcat 从docker hub上拉取tomcat镜像到本地: docker pull tomcat docker images查看是否有拉取到的tomcat 使用tomcat镜像创建容器实例(也叫运行镜像): docker run -it -p 8080:8080 tomcat 解决: 可能没有映射端口或者没有关闭防火墙 把webapps.dist目录换成webapps 先成功启动tomcat:

散步的博客 1726

Docker简介及基本组件

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。一个完整的Docker有以下几个部分组成:客户端守护进程镜像容器Docker引擎Docker Engine是C/S架构,主要有以下部件组成:服务器(Docker daemon):后台运行的Docker daemon进程。

qq_67605201的博客 2725

4、Docker常规安装简介

Docker常规安装简介

weixin_45817985的博客 242

Docker 常规安装简介

Docker常规安装简介

qq_42995238的博客 749

Docker常规软件安装简介

搜索镜像拉取镜像查看镜像启动镜像停止容器移除容器。

timeup417的博客 159
上一篇: 保护你的服务器不受Heartbleed OpenSSL漏洞的威胁
下一篇: 理解SSH的加密与连接过程
普通网友
博客等级 码龄10年 769粉丝 269原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值