当前位置: 首页 > news >正文

docker架构

docker架构
Docker daemon
是Docker最核心的后台进程,它负责响应来自Dockerclient的请求,然后将这此请求翻译成系统调用完成容器管理操作。该进程会在后台后启动一个APIServer,负责接收由 Dockerclient发送的请求;接收到的请求将通过Dockerdaemon分发调度,再由具体的函数来执行请求。
Docker client
是-个泛称,用来向Dockerdaemon发起请求,执行相应的容器管理操作
镜像管理
distribution负责与Dockerregistry交互,上传下载镜像以及存储与v2registry有关的元数据。
registry模块负责与Dockerregistry有关的身份验证、镜像查找、镜像验证以及管理registry mirror等交互操作。
image模块负责与镜像元数据有关的存储、查找,镜像层的索引、查找以及镜像tar包有关的导人导出等操作。
reference负责存储本地所有镜像的repository和tag名,并维护与镜像ID之间的映射关系。口layer模块负责与镜像层和容器层元数据有关的增删查改,并负责将镜像层的增删查改操作映射到实际存储镜像层文件系统的graphdriver模块。
execdriver(容器执行驱动)、volumedriver(volume存储驱动)、graphdriver(镜像存储驱动)
execdriver是对Linux操作系统的namespaces、cgroups、apparmor、SELinux等容器运行所需的系统操作进行的一层二次封装,其本质作用类似于LXC,但是功能要更全面。这也就是为什么LxC会作为execdriver的一种实现而存在。当然,execdriver最主要的实现,也是现在的默认实现:是Docker官方编写的libcontainer库。
volumedriver是volume数据卷存储操作的最终执行者,负责volume的增删改查,屏蔽不同驱动实现的区别为上层调用者提供一个统一的接口。Docker中作为默认实现的 volumedriver是local默认将文件存储于Docker根目录下的volume文件夹单。其他的 volumedriver均是通过外部插件实现的。
graphdriver是所有与容器镜像相关操作的最终执行者。graphdriver会在Docker工作目录下维护一组与镜像层对应的目录,并记下镜像层之间的关系以及与具体的graphdriver实现相关的元数据。这样,用户对镜像的操作最终会被映射成对这些目录文件以及元数据的增删改查,从而屏蔽掉不同文件存储实现对于上层调用者的影响。在Linux环境下,目前 Docker已经支持的graphdriver包括aufs、btrfs、zfs、devicemapper、overlay和vfs。
network
libnetwork抽象出了一个容器网络模型(Container NetworkModel,CNM),并给调用者提供了一个统一抽象接口,其目标并不仅限于Docker容器
docker 工作目录结构
libcontainer实现原理
用Factory创建逻辑容器Container
用逻辑容器创建物理容器
启动逻辑容器Container
docker daemon 与容器之间通信
发送信号通知(signal)
对内存轮询访问(pollmemory)
sockets通信(sockets)
文件和文件描述符(filesandfile-descriptors)

http://www.lryc.cn/news/363821.html

相关文章:

  • 使用Java进行网络采集:代理IP与参数传递详解
  • 多功能光时域反射仪的工作原理
  • 目标检测数据集 - 海洋垃圾检测数据集下载「包含VOC、COCO、YOLO三种格式」
  • 如何进行Java程序的性能优化
  • Echarts柱状图数据太多,自定义长度之后,自适应浏览器缩放
  • 小白级教程—安装Ubuntu 20.04 LTS服务器
  • 9、中华人民共和国个人信息保护法
  • 经典回归模型及Python实现方法
  • Git 保留空文件夹结构
  • 【吊打面试官系列】MySQL 中有哪几种锁?
  • 小巧、免费高级分类整理桌面图标和文件程序
  • Elasticsearch挂掉后,如何快速恢复数据
  • eNSP学习——连接RIP与OSPF网络、默认路由
  • 工具MyBatis Generator(MBG)
  • NeuralForecast 模型的参数 windows_batch的含义
  • 【记录】打印|用浏览器生成证件照打印PDF,打印在任意尺寸的纸上(简单无损!)
  • 【python实现】实时监测GPU,空闲时自动执行脚本
  • chrome 浏览器历史版本下载
  • 【设计模式】工厂模式(创建型)⭐⭐⭐
  • Postman 连接数据库 利用node+xmysql
  • 挑战你的数据结构技能:复习题来袭【6】
  • 如何反编译jar并修改后还原为jar
  • 统计信号处理基础 习题解答10-5
  • Vue3实战笔记(60)—从零开始:一步步搭建Vue 3自定义插件
  • Java面向对象笔记
  • 如何通过PHP语言实现远程控制多路照明
  • Capture One Pro 23:专业 Raw 图像处理的卓越之选
  • 【主题广泛|投稿优惠】2024年交通运输与信息科学国际会议(ICTIS 2024)
  • 表格误删数据保存关闭后如何恢复?5个恢复方法大公开!
  • Go 语言中的切片:灵活的数据结构