【Docker】专题一:Docker 基本架构

本文内容均来自个人笔记并重新梳理,如有错误欢迎指正!

如果对您有帮助,烦请点赞、关注、转发、订阅专栏!


专栏订阅入口

Linux 专栏 | Docker 专栏 | Kubernetes 专栏


往期精彩文章

【Docker】(全网首发)Kylin V10 下 MySQL 容器内存占用异常的解决方法

【Docker】(全网首发)Kylin V10 下 MySQL 容器内存占用异常的解决方法(续)

【Docker】MySQL 源码构建 Docker 镜像(基于 ARM 64 架构)


目录

一、为什么要用 Docker

二、基本架构简介

1、Docker Daemon

2、Docker Client

3、Containerd

4、Runc

5、Docker Registry

6、Images

7、Containers

8、底层技术支持

附录

1、Dockerd 与 Containerd

2、其它概念

3、Docker 安装教程


一、为什么要用 Docker

传统应用部署的方式是直接在服务器环境中进行安装,这就涉及到如何适配各类操作系统,如何根据实际情况安装各种依赖,而这个过程中往往会遇到各种难以解决的套娃问题,特别是当开发环境和实际生产环境使用的操作系统不同时,安装依赖的方式也会发生变化,使得部署复杂度上升。

Docker 同传统的虚拟机比较类似,但是更加轻量级、更加方便。Docker 的作用实际上就是抹平各类操作系统的差异,使得应用如何适配操作系统转变为操作系统如何安装 Docker,相比起来后者容易很多,而且更具有通用性。

同时由于使用了 Docker,原先一台服务器部署一个应用,也变成了可以部署多个应用,提高了服务器的资源利用率。


二、基本架构简介

先上个比较经典的图。

1、Docker Daemon

Docker 守护进程,通常是 Dockerd 或 Containerd

用于监听 Docker API 请求,管理 Docker 对象,如镜像、容器、网络、数据卷

2、Docker Client

Docker 客户端

用户通过命令行与 Docker Daemon 进行交互的最主要的方式

3、Containerd

Containerd 是 Docker Daemon 的核心子组件,接管了所有与容器相关的低级操作,如下载镜像、管理镜像层、运行容器等。Docker Daemon 通过 Containerd 来管理容器的生命周期。

4、Runc

Runc 是一个客户端工具,负责根据 OCI(开放容器倡议)标准创建和运行容器。

Docker Daemon 将高层指令(如 docker run)转换为 Containerd 可以理解的指令,Containerd 则使用 Runc 作为容器运行时(Container Runtime),通过调用 Runc 实际执行这些指令。

5、Docker Registry

Docker 镜像仓库

用于存放和管理 Docker 镜像

附 Docker Hub 地址:https://hub.docker.com/search?type=image

6、Images

Docker 镜像,是创建 Docker 容器的模版

镜像是只读的,并带有创建 Docker 容器的说明

7、Containers

Docker 容器,是 Docker 镜像运行的实例

容器的本质是进程,但运行于独立的命名空间,拥有自己的 root 文件系统、网络配置、进程空间,甚至用户 ID 空间

8、底层技术支持

8.1、Namespace

命名空间,用于资源隔离

8.2、Cgroups

Linux 内核功能,用于资源限制,包括 systemd、cgroupfs 两种类型,推荐类型为 systemd(Kylin系统除外)

8.3、UnionFS

联合文件系统,用于镜像和容器的分层


附录
1、Dockerd 与 Containerd

Containerd 调用链更短,组件更少,占用节点资源更少,更稳定。

k8s中建议选择 Containerd。当遇到以下情况时,需要选择 Dockerd 作为运行时:

- 如需使用 docker in docker
- 如需使用 docker build/push/save/load等命令
- 如需调用 docker API
- 如需使用 docker-compose 或 docker-swarm

2、其它概念
Container Runtime:容器运行时
Container Runtime Interface:CRI,容器运行时接口
Container Network Interface:CNI,容器网络接口(flannel、calico等)
Container Storage Interface:CSI,容器存储接口

3、Docker 安装教程

Get Docker | Docker Docs

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

行者Sun1989

您的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值