《Docker Deep Dive》Note - Docker 引擎
《Docker Deep Dive》Note
Docker 引擎
1. 概览
A(Docker client) --- B(daemon)
subgraph Docker 引擎
B --- C(containerd)
C --- D(runc)
end
Docker 引擎是用来运行和管理容器的核心软件。
主要构成:Docker Client、Docker daemon(Docker守护进程)、containerd、runc。
2. 详解
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. 启动容器
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
《Docker Deep Dive》Note - Docker 引擎的更多相关文章
- 《Docker Deep Dive》Note - 纵观 Docker
<Docker Deep Dive>Note 由于GFW的隔离,国内拉取镜像会报TLS handshake timeout的错误:需要配置 registry-mirrors 为国内源解决这 ...
- Dive查看docker镜像层信息
1.主要采用docker运行dive的方式,不然宿主机还要安装go那些挺麻烦的.具体用法可查看官方: https://github.com/wagoodman/dive 2.拉取dive镜像 dock ...
- 【docker专栏3】docker基础概念-容器、镜像以及引擎组成部分
一.docker镜像与容器 docker镜像是一个可执行的静态独立软件包,包含打包程序代码和软件运行环境等文件.如:代码.运行时库.环境变量和配置文件等都包含在其中.容器是镜像的运行时状态(镜像中的软 ...
- docker operation method note
docker stop script #!/bin/bash CID_LIST=$(docker ps -q | xargs)if [ "$CID_LIST" = "&q ...
- Docker入门之安装Docker
目录 目录 1 1. 前言 1 2. 创建网桥 2 3. 安装Docker 2 3.1. 二进制安装 3 3.1.1. 下载安装 3 3.1.2. 配置服务 3 3.1.3. 启动服务 4 3.2. ...
- Docker学习总结之docker安装
Ubuntu安装指南 以下均翻译自Docker官方文档 ,转载请注明:Vikings翻译 Docker 支持多种平台下的安装运行,现在我们选取结合度最高的ubuntu来说明安装过程. 首先需要明确Do ...
- Docker学习总结之docker入门
Understanding Docker 以下均翻译自Docker官方文档 ,转载请注明:Vikings翻译. What is Docker? Docker 是一个开源的平台,设计目标是可以方便开发, ...
- docker 1.12 版本 docker swarm 集群
博客已经迁移到 个人博客中 个人博客 更新地址: http://www.xf80.com/2016/10/25/docker-swarm-1.12/ docker 1.12 版本 的新特性 (1)do ...
- Docker系统六:Docker网络管理
Docker网络 I. Docer的通信方式 默认情况下,Docker使用网桥(brige)+ NAT的通信模型. Docker启动时会自动创建网桥Docker0,并配置ip 172.17.0.1/1 ...
随机推荐
- HTML5之contenteditable可编辑属性
运用contenteditable实现输入框高度自动增加,输入框标题name相对高度自动居中,代码如下: <!DOCTYPE html> <html> <head> ...
- 使用JS计算前一天和后一天
使用JS实现前一天和后一天 首先,我们先在html中写两个按钮来进行简单操作 <button onclick="Before()">前一天</button> ...
- TP5验证码上传阿里云万网虚拟主机后,验证码不显示的解决办法
TP5不显示验证码 清除缓冲区就应该可以了,今天我刚好也遇到了,解决的办法是在vendor/topthink/think-captcha/CaptchaController.php中加上这个ob_cl ...
- 关于python的深拷贝和浅拷贝
写类函数的时候出了一个错,原代码写在这里: def Update(self, wm, vm, ts, pos, vn, att): # 上一时刻位置,速度 pos_pre = pos self.pos ...
- (一)Cisco DHCP Snooping原理(转载)
采用DHCP服务的常见问题架设DHCP服务器可以为客户端自动分配IP地址.掩码.默认网关.DNS服务器等网络参数,简化了网络配置,提高了管理效率.但在DHCP服务的管理上存在一些问题,常见的有: ●D ...
- 2015-2016-2《Java程序设计》团队博客1
项目内容 经过一些讨论之后决定了最终的项目:简易画图板项目设计与开发 目标 制作一个能够画各种图形的画板,并能有多种颜色可以选择:输入文本时也可以选择字体:能够保存,新建,和导入图片 实现计划 十一周 ...
- hadoop作业
作业要求:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/3223 一.准备一个ubantu 系统 二.创建hadoop用户 创建 设密 ...
- Tomcat的安装以及环境变量的配置
目录 下载 解压并配置环境变量 测试 关闭服务 Tomcat启动时,控制台和IDEA控制台中文乱码解决方案 下载 官方网址:Apache Tomcat® https://tomcat.apache.o ...
- 第07组 Beta冲刺(1/5)
队名:摇光 队长:杨明哲 组长博客:求戳 作业博客:求再戳 队长:杨明哲 过去两天完成了哪些任务 文字/口头描述:代码编辑器 展示GitHub当日代码/文档签入记录:(组内共用,已询问过助教小姐姐) ...
- freeNAS nfs linux挂载
新建存储块,设置权限为root wheel 备份修改/var/lib/nova 名称 新建/var/lib/nova 目录,修改目录的属主机权限 mv /var/lib/nova /var/lib/n ...