乔克视界 乔克视界
首页
  • 运维
  • 开发
  • 监控
  • 安全
  • 随笔
  • Docker
  • Golang
  • Python
  • AIOps
  • 心情杂货
  • 读书笔记
  • 面试
  • 实用技巧
  • 博客搭建
友链
关于
收藏
  • 分类
  • 标签
  • 归档

乔克

云原生爱好者
首页
  • 运维
  • 开发
  • 监控
  • 安全
  • 随笔
  • Docker
  • Golang
  • Python
  • AIOps
  • 心情杂货
  • 读书笔记
  • 面试
  • 实用技巧
  • 博客搭建
友链
关于
收藏
  • 分类
  • 标签
  • 归档
  • Docker

    • Docker简介
    • Docker的架构
      • Dockerd
      • Containerd
      • Containerd-shim
      • RunC
    • Docker的安装
    • Docker基础用法
    • Docker镜像和容器的基本操作
    • Docker的网络模式
    • Docker存储卷
    • Dockerfile介绍
    • 多阶段构建
    • 镜像加速
    • Docker的NS和CGroups
    • Docker用法整理
    • Docker和Containerd的区别
    • 镜像安全
  • Golang

  • AIOps

  • 专栏
  • Docker
乔克
2025-07-17
目录

Docker的架构

Docker在1.11之前主要是通过docker daemon来处理client的请求,容器的相关操作都是通过docker daemon来完成。从1.11之后,并不是简简单单的通过docker daemon来处理了,它集成了Containerd、RunC等多个组件。这些组件之间相互协作来完成客户端请求和容器管理。

现在的架构图如下:

1ec2e0224f9264fdad7a277b70980591 MD5

下面对这些组件进行一一说明。

# Dockerd

Dockerd是一个守护进程,它可以通过TCP和UNIX Domain Socket两种途径接收客户端的HTTP请求,这些请求都是Restful风格。也就是说Dockerd是面向用户的,它是对容器操作相关的API的上层封装。

# Containerd

Containerd对外提供gRPC形式的API,API的定义中不再包含于集群、编排等相关功能,但是它也不是简单的将Docker API照搬过来,而是进行了更细粒度的抽象,并且还实现了监控管理、多租户的接口,方便外部应用利用这套API来实现高效和定制容器管理功能。

# Containerd-shim

在默认情况下,Docker守护进程在停止容器的时候会发送SIGTERM信号,而容器进程有可能错误的忽略该信号,为了能够正确的处理系统信号等相关特性,通过Containerd-shim来保证能够正确处理各种信号,所以每个容器都会对应一个Containerd-shim实例。它对外的接口是ttRPC。

# RunC

OCI 定义了容器运行时标准,runC 是 Docker 按照开放容器格式标准(OCF, Open Container Format)制定的一种具体实现。runC 是从 Docker 的 libcontainer 中迁移而来的,实现了容器启停、资源隔离等功能。Docker 默认提供了 docker-runc 实现,事实上,通过 containerd 的封装,可以在 Docker Daemon 启动的时候指定 runc 的实现。

runc不是以守护进程的方式来执行,它会将容器的运行配置和状态数据记录在json文件中,当Containerd要求Runc执行例如停止、暂停容器等操作,它会根据容器ID在配置好的路径下找到该json文件,然后再利用json中记录的容器进程PID以及CGroup文件路径等作为参数来调用操作系统API,并完成自己的任务。

由RunC启动的容器进程的标准输入和标准输出被重定向到管道中,并在Contained中被关联到FIFO文件中,这些FIFO文件是在Dockerd中创建的,并通过gRPC请求将它们的路径名传递到Contained中。

上次更新: 2025/07/18, 18:41:03
Docker简介
Docker的安装

← Docker简介 Docker的安装→

最近更新
01
2025年,SRE在企业中可以做哪些事
07-18
02
SRE 如何提升自己在团队中的影响力
07-18
03
使用Go开发MCP服务
07-18
更多文章>
Theme by Vdoing | Copyright © 2019-2025 乔克 | MIT License | 渝ICP备20002153号 |
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式