zoukankan      html  css  js  c++  java
  • Docker、containerd、docker-shim、runC之间的关系

    Docker、containerd、docker-shim、runC之间的关系

    • docker:docker本身而言包括了docker client和dockerd,dockerd实属是对容器相关操作的api的最上层封装,直接面向操作用户;

    • containerd:dockerd实际真实调用的还是containerd的api接口(rpc方式实现),containerd是dockerd和runC之间的一个中间交流组件,理论上,不运行dockerd,也能够直接通过containerd来管理容器。

      向上为Docker daemon提供gRPC接口,使得Docker Daemon屏蔽下面的结构变化,确保原有接口向下兼容。向下通过containerd-shim结合runC,使得引擎可以独立升级。

    • docker-shim:真实运行容器的载体,每启动一个容器都会起一个新的docker-shim的进程。它通过指定三个参数:容器ID、bundle目录(containerd对应某个容器生成目录),运行时二进制(默认是runC),来调用runC的api创建一个容器。

    • runC:运行容器的命令行工具,根据OCI的标准来创建和运行容器。Docker默认提供了docker-runc实现,事实上,通过containerd的封装,可以在Docker Daemon启动的时候指定runc的实现。

    img

    img

    当Docker daemon启动之后,dockerd和docker-containerd进程一直存在。当启动容器之后,docker-containerd进程会创建docker-containerd-shim进程。最后docker-containerd-shim子进程,已经是实际在容器中运行的进程。

  • 相关阅读:
    AG-Admin微服务框架入门
    使用node-webkit包装浏览器
    转 使用Docker部署 spring-boot maven应用
    转 docker的下载与安装
    Maven基本理解
    物联网垂直态势分析
    纯技术商业价值
    OpenLayers 3 入门教程
    转 从红帽、GitHub和Docker看开源商业模式的进阶
    关于 Total Commander 的标签(Tab)功能【转】
  • 原文地址:https://www.cnblogs.com/LMIx/p/14421569.html
Copyright © 2011-2022 走看看