动力节点Docker入门到进阶(二)Docker引擎

分享一下最近正在b站上看动力节点的docker课程,整理了相关学习笔记,会按照学习进度慢慢更新的,加油

2 Docker引擎

2.1 Docker引擎发展历程

2.1.1 首发版本架构

Docker在首次发布时,其引擎由两个核心组件构成:LXC(Linux Container)与Docker Daemon。
不过,该架构依赖于LXC,使得Docker存在严重的问题:

  • 依赖于外部工具,对Docker来说,存在着巨大的生存风险
  • LXC使得Docker无法实现跨平台

Docker Daemon的“大而全”也带来了严重的问题:

  • 版本更新与功能扩展较难
  • 运行较慢,带来性能问题
  • Docker Daemon运行出现问题,会直接影响容器的运行
  • 不符合软件哲学

2.1.2 Docker0.9版本架构

从Docker0.8版本开始,Docker使用自研的Libcontainer工具替换了LXC。

2.1.3 Docker1.1版本架构

2017年7月OCI基金会发布了两个规范(镜像规范与容器运行时规范)的OCI1.0版本。2016年底发布的Docker1.1版本基本遵循了OCI1.0版本。
从Docker1.1版本开始,Docker Daemon中不再包含任何容器运行时代码,而是将容器运行时单独剥离了出来,形成了Runc项目。

2.2 Docker引擎架构

Docker引擎是用来运行和管理容器的核心软件,其现代架构由四部分主要组件构成: Docker Client,Dockerd、Containerd与Runc。

2.2.1 Docker Client

Docker客户端,Docker引擎提供的CLI工具,用于用户向Docker提交命令请求。

2.2.2 Dockerd

Dockerd,即Docker Daemon。在现代Dockerd中的主要包含的功能有镜像构建、镜像管理、REST API、核心网络及编排等。其通过gRPC与Containerd进行通信。

2.2.3 Containerd

Containerd,即Container Daemon,该项目的主要功能是管理容器的生命周期。不过,其本身并不会去创建容器,而是调用Runc来完成容器的创建。
Docker公司后来将Containerd项目捐献给了CNCF(云原生基金会)。

2.2.4 Runc

Runc,Run Container,是OCI(开放容器倡议基金会)容器运行时规范的实现,Runc项目的目标之一就是与OCI规范保持一致。所以,Runc所在层也称为OCI层。这使得Docker Daemon中不用再包含任何容器运行时的代码了,简化了Docker Daemon。
Runc只有一个作用—创建容器,其本质是一个独立的容器运行时CLI工具。其在fork出一个容器子进程后会启动该容器进程。在容器进程启动完毕后,Runc会自动退出。

2.2.5 Shim

Shim(垫片)是实现“Daemonless Container(无Docker Daemon与Container Daemon容器)”不可或缺的工具,使容器与Docker Daemon解耦,使得Docker Daemon的维护与升级不会影响到运行中的容器。
每次创建容器时,Containerd同时会fork出Runc进程与Shim进程。当Runc自动退出之前,会先将新容器进程的父进程指定为相应的Shim进程。
除了作为容器的父进程外,Shim进程还具有两个重要功能:
  • 保持所有STDIN与STDOUT流的开启状态,从而使得当Docker Daemon重启时,容器不会因为Pipe的关闭而终止。
  • 将容器的退出状态反馈给Docker Daemon。

2.3 Docker引擎分类

在安装Docker之前需要先了解Docker官方对其版本的分类。Docker的版本分为大版本与小版本。

2.3.1 大版本

Docker从大版本来说,分为三类:Moby、社区版Docker-CE(Community Edition)和企业版Docker-EE(Enterprise Edition)。

2.3.2 小版本

从v1.13.1之后,Docker的发布计划发生了变更,每个大版本下都出现了两个小版本Edge月版与Stable季版。不过,现在的官网中一般只能看到Stable版本。

2.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值