一,Docker简介

1,什么是容器

(1)一种虚拟化的方案

(2)操作系统级别的虚拟化

(3)只能运行相同或相似内核的操作系统

(4)依赖于Linux内核特性:Namespace和CGroups(Control Group)

2,虚拟机与容器对比

        与虚拟相比,容器占用的磁盘空间更少,如下图,使用虚拟机部署应用需要包含应用,依赖的类库和完整的操作系统,但是容器只需要应用和其依赖的类库。

虚拟机原本可以几十M的应用可能需要几个G操作系统来支撑。

Docker基础学习(一)-基本概念和框架_客户端

3,什么是Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。

Docker的目标:

(1)提供简单轻量的建模方式

(2)职责的逻辑分离

(3)快速高效的开发生命周期

(4)鼓励使用面向服务的架构

Docker的使用场景:

(1)使用Docker容器开发、测试、部署服务

(2)创建隔离的运行环境

(3)搭建测试环境

(4)构建多用户的平台即服务(PaaS)基础设施

(5)提供软件即服务(SaaS)应用程序

(6)高性能、超大规模的宿主机部署


二,Docker的基本组成

1,Docker Client客户端

2,Docker Daemon守护进程

3,Docker Image镜像

4,Docker Container容器

5,Docker Registry仓库 

Docker Client客户端通过发送各种操作命令访问守护进程,守护进程也将结果反馈到客户端

Docker基础学习(一)-基本概念和框架_基本概念和框架_02

Docker Client客户端访问守护进程,来操作Docker容器,容器是由镜像来创建,而镜像则放在Docker仓库中。

Docker基础学习(一)-基本概念和框架_守护进程_03

三,Docker容器相关技术简介

Namespace命名空间:

1,在编程语言中,它的主要作用是代码的封装即代码隔离。

2,在操作系统系统中,它的主要作用是系统资源的隔离,包括:进程,网络,文件系统等等。

Docker主要使用的5种命名空间:

(1)PID(Process ID) 进程隔离

(2)NET(Network) 管理网路接口

(3)IPC(InterProcess Communication) 管理跨进程通信的访问

(4)MNT(Mount) 管理挂载点

(5)UTS(Unix Timesharing System) 隔离内核和版本标识


Control groups控制组提供的功能:

(1)资源限制

(2)优先级设定

(3)资源计量

(4)资源控制


通过以上两种技术,提供给Docker容器的的能力:

(1)文件系统隔离:每个容器都有自己的root文件系统

(2)进程隔离:每个容器都运行在自己的进程环境中

(3)网路隔离:容器间的虚拟网络接口和IP地址都是分开的

(4)资源隔离和分组:使用Cgroups将CPU和内存之类的资源独立分配给每个Docker容器