一、镜像
镜像:是一个只读的文件和文件夹组合,它包含了容器运行时所需要的所有基础文件和配置信息,是容器启动的基础。
二、容器
容器是镜像的运行实体,镜像是静态的只读文件,而容器带有运行时需要的可写文件层,并且容器中的进程属于运行状态,即容器运行着真正的应用进程,容器有初建,运行,停止,暂停和删除五种状态。
三、仓库
镜像仓库类似于代码仓库,用来存储和分发Docker镜像,镜像仓库分为公共镜像和私有镜像仓库
四、Docker架构
Docker整体架构采用C/S(客户端/服务端)模式,主要由客户端和服务端两大部分组成,客户端负责发送操作指令,服务端负责接收和处理指令。客户端和服务端通信有多种方式,既可以在同一台机器上通过UNIX套接字通信,也可以通过网络连接远程通信。
4.1、Docker客户端
docker客户端是一种泛称,其中docker命令是Docker用户与Docker服务端交互的主要方式,除了命令方式,还可以直接请求Rest API的方式与Docker服务端交互,甚至还可以是SDK交互。
4.2、Docker服务端
Docker服务端是Docker所有后台服务的统称,其中dockerd是一个后台管理进程,它负责响应和处理来自Docker客户端的请求,然后将客户端的请求转化为Docker的具体操作,例如镜像、容器、网络和挂载卷等具体对象的操作和管理。
4.3、重要组件
- runC是Docker官方按照OCI容器运行时标准的一个实现。是一个用来运行容器的轻量级工具,是真正用来运行容器的。
- containerd是Docker服务端的一个核心组件,是从docker中剥离出来的,是容器标准化后产物,containerd通过containerd-shim启动并管理runC,可以说containerd真正管理了容器的生命周期。
- containerd-shim是作用是将containerd和真正的容器进程解耦,使用containerd-shim作为容器进程的父进程,从而实现重启dockerd不影响已经启动的容器进程。