文章目录
- 一、Docker是什么?
- 二、Docker原理
- 为什么使用Docker
- 三、Docker概念
- 1.镜像(image) 与容器(container)
- 2.docker与dockerd
一、Docker是什么?
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
一个完整的Docker有以下几个部分组成:
DockerClient客户端
Docker Daemon守护进程
Docker Image镜像
DockerContainer容器
二、Docker原理
Docker 是一种以操作系统级虚拟化为技术基础,以容器(container) 为载体提供软件服务的平台即服务(PaaS) 产品。
容器(container) :(也被称为zone, virtual private server, jail等)是指操作系统内核支持下存在的多个互相隔离(isolated) 的用户空间(user space) 实例。
容器技术的实现主要由Linux 内核支持,重要的两个技术是linux namespace 和cgroup
cgroups: 是Linux control groups 的简写,是Linux 内核特性
控制组(control group, cgroup) :一个控制组就是一些进程的集合通过参数配置,可以监控(monitor) 并限制(limit) 进程组的资源使用情况,通过控制组进程(process) 以层级构成组群
操作系统级虚拟化(OS-level virtualization) :是一种操作系统范式(paradigm) ,其内核(kernel) 允许多个容器同时存
在。
为什么使用Docker
Docker 通过操作系统级的虚拟化提供了隔离的环境。使得某服务的安装与去除不影响其他的服务
Docker 作为平台提供了软件分发部署渠道
Docker 注册局(registry) 提供很多流行服务,例如mariadb 数据库、ASP.NET core 等
相比虚拟机,不用安装系统、编译;此外部署、迁移、去除服务都非常简单
由于Docker 镜像(image) 提供容器模版和注册局(registry)方便的分发机制简易地提供一致的开发运行环境
轻量化与高效率
三、Docker概念
以镜像(image) 的生命周期为视点的Docker 使用流程
1.镜像(image) 与容器(container)
镜像(image) 是一种只读(read-only) 的模版,容器(container) 的创建依照镜像提供的模版。
镜像依赖于其他镜像,相互间有一个父子(parent/child) 关系
镜像以镜像层(image layer) 构成
Docker 使用存储驱动(storage driver) 来保存镜像(image)层(layer)
不同的存储驱动有不同的存储效率和读写效率
可以使用aufs, zfs, btrfs 等存储驱动
每个镜像层实际上代表Dockerfile 的一条指令(instruction)
当文件被添加(add) 或删除(remove) 时一个新的层被建立
不更改文件的指令仅仅更改镜像的元数据(metadata)
上层删除的文件仍然在下层存在
镜像层(layer) 堆叠存储,只读
容器层是在镜像层上的临时层,可读写
当容器被删除时容器层被删除,但镜像层不会被改变
2.docker与dockerd
dockerd
为Docker 的守护进程(daemon)
监听Docker API 请求
管理Docker 对象(object) 如镜像(image) 、容器(container)
与其守护进程交互提供Docker 服务
docker
是Docker客户端,是用户与Docker 交互主要的接口