优点:轻量、业务隔离、标准交付
chroot:改变某个进程的根目录,使得该程序不能访问目录之外的其他目录,和容器类似
Docker利用Namespace做主机名、网络、PID等资源的隔离,用Cgroups对进程或者进程组做资源(CPU、内存等)限制,联合文件系统用于镜像构建和容器运行环境
功能:对内核资源进行隔离,容器中的进程可以在单独的命名空间中运行,并且只可以访问当前容器命名空间的资源
Docker主要用到5种:
限制容器CPU和内存等资源的使用
UnionFS,通过创建文件层进程操作的文件系统,非常轻快,Docker使用其为容器提供构建层,使容器可以实现写时复制以及镜像的分层构建和存储
常用的联合文件系统有AUFS、Overlay、Devicemapper
容器启动的先决条件
一个只读的文件和文件夹组合,包含容器运行时所需要的所有基础文件和配置信息
使用:
容器是镜像的运行实体,镜像是静态的只读文件,容器带有运行时需要的可写文件层,容器运行真正的应用进程
容器有初建、运行、停止、暂停、删除五种状态
容器有自己独立的命名空间隔离和资源限制
存储和分发Docker镜像
分为公共镜像仓库和私有镜像仓库
整体架构采用C/S模式,主要由客户端和服务端两部分组成,客户端负责发送操作指令,服务端负责接收和处理指令
docker命令、REST API、各种语言的SDK
所有后台服务的统称
dockerd:负责响应和处理来自客户端的请求,转换为具体操作
containerd:管理容器生命周期,启动并管理runC
runC:运行容器的轻量级工具
containerd-shim:将containered和真正的容器进程解耦,作为容器进程的父进程,containerd重启不影响已经启动的容器进程