文章目录

  • 一、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

qnap docker和app区别 snap和docker的关系_qnap docker和app区别


Docker 通过操作系统级的虚拟化提供了隔离的环境。使得某服务的安装与去除不影响其他的服务

Docker 作为平台提供了软件分发部署渠道

Docker 注册局(registry) 提供很多流行服务,例如mariadb 数据库、ASP.NET core 等
相比虚拟机,不用安装系统、编译;此外部署、迁移、去除服务都非常简单

由于Docker 镜像(image) 提供容器模版和注册局(registry)方便的分发机制简易地提供一致的开发运行环境

轻量化与高效率

qnap docker和app区别 snap和docker的关系_学习_02

三、Docker概念

以镜像(image) 的生命周期为视点的Docker 使用流程

qnap docker和app区别 snap和docker的关系_容器_03

1.镜像(image) 与容器(container)

镜像(image) 是一种只读(read-only) 的模版,容器(container) 的创建依照镜像提供的模版。

镜像依赖于其他镜像,相互间有一个父子(parent/child) 关系

qnap docker和app区别 snap和docker的关系_学习_04


镜像以镜像层(image layer) 构成

Docker 使用存储驱动(storage driver) 来保存镜像(image)层(layer)

不同的存储驱动有不同的存储效率和读写效率
可以使用aufs, zfs, btrfs 等存储驱动

每个镜像层实际上代表Dockerfile 的一条指令(instruction)

当文件被添加(add) 或删除(remove) 时一个新的层被建立
不更改文件的指令仅仅更改镜像的元数据(metadata)
上层删除的文件仍然在下层存在

qnap docker和app区别 snap和docker的关系_容器_05

镜像层(layer) 堆叠存储,只读 
容器层是在镜像层上的临时层,可读写
当容器被删除时容器层被删除,但镜像层不会被改变

2.docker与dockerd

dockerd

为Docker 的守护进程(daemon)
监听Docker API 请求
管理Docker 对象(object) 如镜像(image) 、容器(container)
与其守护进程交互提供Docker 服务

docker

是Docker客户端,是用户与Docker 交互主要的接口