《Docker Deep Dive》Note - Docker 引擎

《Docker Deep Dive》Note

Docker 引擎

1. 概览

graph TB
A(Docker client) --- B(daemon)
subgraph Docker 引擎
B --- C(containerd)
C --- D(runc)
end

Docker 引擎是用来运行和管理容器的核心软件。
主要构成:Docker Client、Docker daemon(Docker守护进程)、containerd、runc。

2. 详解

graph TB
A(Docker client) --- B(Docker daemon)
B --- C(containerd)
subgraph 容器Supervisor
C --- D(shim)
D --- D1(runc)
D1 --- D2[运行容器]
C --- E(shim)
E --- E1(runc)
E1 --- E2[运行容器]
C --- F(shim)
F --- F1(runc)
F1 --- F2[运行容器]
C --- G(shim)
G --- G1(runc)
G1 --- G2[运行容器]
end

3. 开放容器计划(OCI)

基于 OCI 的标准,Docker 引擎采用模块化设计。
开放容器计划定义了两个容器相关的规范:

  • 镜像规范
  • 容器运行时规范

Docker 引擎尽可能实现了OCI的规范,Docker daemon 不再包含任何容器运行时的代码,所有的容器运行时代码在一个单独的OCI兼容层中实现。

4. runc

runc 是 OCI 容器运行时规范的参考实现(容器运行时)。
runc 只有一个作用--创建容器。
基于 Libcontainer。

5. containerd

containerd 的作用是容器的生命周期管理。
containerd 在 Linux 和 Windows 中以 Daemin 的方式运行。
containerd 也包含诸如镜像管理的模块化功能。

6. 启动容器

graph TB
A(Docker client) --向 Docker API 发出 docker container run 命令--> B(Docker daemon)
B --在 API 端点接收指令 指示 containerd 启动新容器--> C(containerd)
C --给 runc 传递 OCI bundle即镜像 指示 runc 创建容器--> D(shim)
subgraph runc
D --> E(runc)
E --> F(运行容器)
end

7. 解耦模型的优势

daemonless container

  • Docker daemon 的维护和升级工作不会影响到运行中的容器。

8. shim 组件

  • 保持所有 STDIN 和 STDOUT 流是开启状态,从而当 daemon 重启的时候容器不会因为管道(pipe)的关闭而终止。
  • 将容器的退出状态反馈给 daemon。

9. daemon

目前仍然有很多功能是在 Docker daemon 中实现的。
其中多数功能可能会随着时间推移被拆解。
目前 daemon 中存在但不仅限的功能包括:API、镜像管理、身份认证、安全特性、核心网络以及卷。

由此可以得出结论:Docker 引擎的模块化工作仍在进行中

The end
Last updated by Jehorn

原文地址:https://www.cnblogs.com/jehorn/p/11830718.html

时间: 2024-11-29 10:22:44

《Docker Deep Dive》Note - Docker 引擎的相关文章

《Docker Deep Dive》Note - 纵观 Docker

<Docker Deep Dive>Note 由于GFW的隔离,国内拉取镜像会报TLS handshake timeout的错误:需要配置 registry-mirrors 为国内源解决这个问题. 可以配置为阿里的加速源:https://cr.console.aliyun.com/undefined/instances/mirrors,阿里的加速器可以提升获取Docker官方镜像的速度. 登录开发者账号后,将自己的加速器地址复制到 Docker Settings > Daemon >

【docker】01、docker简介

一.docker简介 Docker 官网:http://www.docker.com Github Docker 源码:https://github.com/docker/docker 1.docker是什么 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口(类似 i

Docker学习笔记(2)--Docker常用命令

原文地址:http://blog.csdn.net/we_shell/article/details/38368137 1. 查看docker信息(version.info) [plain] view plaincopy # 查看docker版本 $docker version # 显示docker系统的信息 $docker info 2. 对image的操作(search.pull.images.rmi.history) [plain] view plaincopy # 检索image $do

Docker学习总结之docker入门(转自:Vikings翻译)

Understanding Docker 以下均翻译自Docker官方文档 What is Docker? Docker 是一个开源的平台,设计目标是可以方便开发,方便部署和方便执行应用.使用docker可以快速分发开发好的应用.借助于Docker,你可以将开发平台和应用分离开,并且像管理应用一样管理开发平台.Docker可以帮助你快速开发应用,快速测试应用,快速部署应用,并且缩短开发代码和执行代码之间的周期间隔. Docker 是凭借一个轻量级容器的虚拟化平台工作流和相关工具来达到上述功能的,

Docker:再解Docker概念(3)

Docker是GO语言编写的. 1.Docker发挥的作用: 1.快速.一致.标准化的交付应用.从开发.测试.到部署交付到成产环境都可以使用docker命令处理image到不同的环境 2.部署和扩展:docker可以运行在多种平台.docker可以根据需求在同一个机器上运行/删除不同的容器,实现不同的功能作用 3.同一硬件下多个负载docker更高效:docker运行在liunix内核上.可以更高效的使用物理硬件 2.引擎的构成 3.运行架构: 通过签名的实战,我们理解这个运行架构应该更顺利:我

Docker——Windows7下使用docker toolbox

一.安装 官方网址:https://docs.docker.com/docker-for-windows/install/ 本文的基础环境是Windows7,所以安装Docker Toolbox(docker的一个工具集):官方建议是安装完成后重启一下电脑便于开启Microsoft Hyper-V,Windows10可以在任务管理器看到虚拟化已启用的字样. Kitematic. 这是Docker的GUI版本Docker QuickStart shell. 这是一个已经配置好Docker的命令行环

X64 Deep Dive

zhuan http://www.codemachine.com/article_x64deepdive.html X64 Deep Dive This tutorial discusses some of the key aspects of code execution on the X64 CPU like compiler optimizations, exception handling, parameter passing and parameter retrieval and sh

Docker学习总结之docker入门

Understanding Docker 以下均翻译自Docker官方文档 ,转载请注明:Vikings翻译. What is Docker? Docker 是一个开源的平台,设计目标是可以方便开发,方便部署和方便执行应用.使用docker可以快速分发开发好的应用.借助于Docker,你可以将开发平台和应用分离开,并且像管理应用一样管理开发平台.Docker可以帮助你快速开发应用,快速测试应用,快速部署应用,并且缩短开发代码和执行代码之间的周期间隔. Docker 是凭借一个轻量级容器的虚拟化平

Docker: How to configure Docker with devicemapper

Background: Device Mapper is a kernel-based framework that underpins many advancedvolume management technologies on Linux. Docker's devicemapper storage driverleverages the thin provisioning and snapshotting capabilities of this frameworkfor image an