热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

DockerOCI容器标准和引擎架构

docker利用namespace技术,可以将进程放到一个隔离环境里面,同时cgroup技术将容器进程限制资源配额,可以通过pveryfs来模拟一个完整的这种文件系统。那么业界又是

docker利用namespace技术,可以将进程放到一个隔离环境里面,同时cgroup技术将容器进程限制资源配额,可以通过pveryfs来模拟一个完整的这种文件系统。

那么业界又是如何定义这一切的呢?这就是OCI的容器标准了。

OCl 容器标准


Open Container Initiative

  1. OCl 组织于2015年创建,是一个致力于定义容器镜像标准和运行时标准的开放式组织。
  2. OCI定义了镜像标准(Image Specification)、运行时标准(Runtime Specification)和分发标准(Distribution Specification)
  • 镜像标准定义         应用如何打包(其实也就是overyfs那块,怎么通过容器镜像的驱动来将分层的文件系统标准化)
  • 运行时标准定义     如何解压应用包并运行(将容器镜像进行解压,并且运行)
  • 分发标准定义         如何分发容器镜像

docker当时认为它是标准,但是docker本生实现是很重的,当kubernetes对接docker的时候会发现很多东西对不上的,中间功能会有相互冲突和覆盖的地方,所以kubernetes起了一个OCI的规范,它尝试去将容器技术规范化,标准化。当你要去实现一套自己定义容器规范的时候,那么那就需要去遵循这套规范。

docker 引擎架构


 在每台机器上你安装了docker之后,它会有一个docker daemon,这个是docker本身的一个后台服务端,它实际上就是rest api,同时机器上面还会安装docker command,这个时候就可以将请求给到docker daemon,现在新的docker版本都已经支持了对OCI的兼容,docker daemon接收到请求之后通过GRPC的调用将请求转到containerd里面去,containerd是真正用来控制这些运行时的,containerd也是一个单独可以运行的组件。

containerd会去真正启动containerd的shim进程,然后再通过runc,也就是底层运行时的一个接口

,通过runc再去启动容器进程。

通过上面,docker就整个和OCI规范完全匹配起来了。

docker shim它的作用是什么:在早期containerd和containerd shim是不存在的,在早期docker命令去启动容器的时候,这个容器进程是由docker daemon直接拉起的,也就是docker daemon下面是你的容器进程,这会有什么问题呢?docker daemon是你所有容器的父进程每当你去升级docker或者重启docker的时候,父进程就不存在了,那么所有的子进程就全部会重启。也就是说你不能轻易的去升级docker,在早期docker是有一个这样致命问题的。

所以后面就有了containerd,它是一个更加轻量级的容器管理进程,在启动容器进程的时候,不是以父进程的身份去启动,而是启动shim,这个shim进程是用来维护容器进程生命周期的,shim进程在运行起来之后,它会将shim进程交给操作系统的init system,由systemd去管理的。

这样的话containerd下面就不挂任何的子进程的,那么containerd就可以随便更新,升级,重启,下面的应用是不受影响的。

它就将控制组件和正真运行业务的组件分开了,所以containerd就相对docker优势就是可以随便升级,随意修改,后面docker也不得不这样,kubernetes是可以直接使用contained,因为contained已经是一个完整的运行时了。所以docker不得不加入支持containerd行列中来,所以就有了上面的架构。


推荐阅读
  • 提升 Kubernetes 集群管理效率的七大专业工具
    Kubernetes 在云原生环境中的应用日益广泛,然而集群管理的复杂性也随之增加。为了提高管理效率,本文推荐了七款专业工具,这些工具不仅能够简化日常操作,还能提升系统的稳定性和安全性。从自动化部署到监控和故障排查,这些工具覆盖了集群管理的各个方面,帮助管理员更好地应对挑战。 ... [详细]
  • 本文探讨了使用Python进行微服务架构设计的合理性和适用性。首先,介绍了微服务的基本概念及其在现代软件开发中的重要性。接着,通过具体的业务场景,详细分析了Python在微服务架构设计中的优势和挑战。文章还讨论了在实际应用中可能遇到的问题,并提出了相应的解决方案。希望本文能够为从事Python微服务开发的技术人员提供有价值的参考和指导。 ... [详细]
  • 了解_Istio是啥?一文带你彻底了解!
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Istio是啥?一文带你彻底了解!相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 利用ZFS和Gluster实现分布式存储系统的高效迁移与应用
    本文探讨了在Ubuntu 18.04系统中利用ZFS和Gluster文件系统实现分布式存储系统的高效迁移与应用。通过详细的技术分析和实践案例,展示了这两种文件系统在数据迁移、高可用性和性能优化方面的优势,为分布式存储系统的部署和管理提供了宝贵的参考。 ... [详细]
  • Spring框架的核心组件与架构解析 ... [详细]
  • 大家好,全新的技术专栏《从零开始掌握容器云网络实战》正式上线。该专栏将系统地介绍容器云网络的基础知识、核心技术和实际应用案例,帮助读者全面理解和掌握容器云网络的关键技术与实践方法。 ... [详细]
  • CentOS 7环境下Jenkins的安装与前后端应用部署详解
    CentOS 7环境下Jenkins的安装与前后端应用部署详解 ... [详细]
  • 掌握PHP编程必备知识与技巧——全面教程在当今的PHP开发中,了解并运用最新的技术和最佳实践至关重要。本教程将详细介绍PHP编程的核心知识与实用技巧。首先,确保你正在使用PHP 5.3或更高版本,最好是最新版本,以充分利用其性能优化和新特性。此外,我们还将探讨代码结构、安全性和性能优化等方面的内容,帮助你成为一名更高效的PHP开发者。 ... [详细]
  • 在基于.NET框架的分层架构实践中,为了实现各层之间的松散耦合,本文详细探讨了依赖注入(DI)和控制反转(IoC)容器的设计与实现。通过合理的依赖管理和对象创建,确保了各层之间的单向调用关系,从而提高了系统的可维护性和扩展性。此外,文章还介绍了几种常见的IoC容器实现方式及其应用场景,为开发者提供了实用的参考。 ... [详细]
  • 在CentOS上部署和配置FreeSWITCH
    在CentOS系统上部署和配置FreeSWITCH的过程涉及多个步骤。本文详细介绍了从源代码安装FreeSWITCH的方法,包括必要的依赖项安装、编译和配置过程。此外,还提供了常见的配置选项和故障排除技巧,帮助用户顺利完成部署并确保系统的稳定运行。 ... [详细]
  • Docker网络基础探讨了如何通过高效的技术手段实现跨主机容器间的顺畅通信与访问。本文深入分析了Docker网络架构,特别是其在多主机环境下的应用,为Go语言开发者提供了宝贵的实践指导和理论支持。 ... [详细]
  • 利用Jenkins与SonarQube集成实现高效代码质量检测与优化
    本文探讨了通过在 Jenkins 多分支流水线中集成 SonarQube,实现高效且自动化的代码质量检测与优化方法。该方案不仅提高了开发团队的代码审查效率,还确保了软件项目的持续高质量交付。 ... [详细]
  • 在本文中,我们将探讨如何在Docker环境中高效地管理和利用数据库。首先,需要安装Docker Desktop以确保本地环境准备就绪。接下来,可以从Docker Hub中选择合适的数据库镜像,并通过简单的命令将其拉取到本地。此外,我们还将介绍如何配置和优化这些数据库容器,以实现最佳性能和安全性。 ... [详细]
  • Spring Boot 实战(一):基础的CRUD操作详解
    在《Spring Boot 实战(一)》中,详细介绍了基础的CRUD操作,涵盖创建、读取、更新和删除等核心功能,适合初学者快速掌握Spring Boot框架的应用开发技巧。 ... [详细]
author-avatar
靠谱的郭大虾_938
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有