Docker基础

1.Docker与虚拟机的区别?
虚拟机 : 虚拟出一套硬件 → 运行一个完整的操作系统 → 在该系统上运行所需进程
docker : 安装在服务器上 → 运行进程

Docker使用基于linux内核的技术对进程进行封装隔离,是操作系统层面的虚拟化技术,由于隔离的进程独立与宿主和其他的隔离进程,所以称为容器.容器内的应用进程直接运行于宿主的内核,容器内既没有自己的内核也没有进行硬件虚拟,因此比虚拟机更高效便捷.

Docker优势 : 更高效的利用系统资源, 更快速的启动时间, 一致的运行环境, 持续交付和部署, 易迁移,维护和扩展

2.Docker引擎
Docker引擎包含 1.一种服务器 2.REST API 3.CLI 三个组件的客户端服务器应用程序

客户端是一个CLI命令行工具,输入命令去请求服务器的REST API
服务器是一个守护进程,对外暴露通信接口 REST API
在客户端CLI界面输入命令,请求REST API进而指示服务器进行操作

Docker引擎管理着镜像,容器,网络,数据卷

3.Docker的容器与镜像的概念

Docker使用的是C/S架构 , 容器与镜像 类似于JAVA中的 对象与类.
客户端CLI命令行去通知docker服务器到远程仓库去拉取一个镜像到本地 , 再通过客户端CLI docker run 镜像 就可以创建一个对应的容器

4.Docker镜像

首先了解操作系统:
操作系统分为内核空间和用户空间,对于开源的Linux来说,当Linux内核启动以后,会挂载一个root文件系统提供用户空间支持.
什么叫root文件系统?
简单来说,就是能让操作系统正常运行的文件和文件夹的大集合,对比于Windows来说,就是安装完Windows系统以后系统盘的,与系统相关的固定的文件夹本质上就是类似于Linux的root文件系统.
什么叫镜像?
镜像就相当于一个root文件系统,是一个更为特殊的文件系统. 除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。
镜像的分层存储?
因为镜像包含操作系统完整的root文件系统,体积较为庞大,因此采用了分层存储的架构模式.一个镜像是由多层文件系统联合组成. 构建一个镜像时会一层一层的构建,每一层构建以后都不可改变. 例如 : 删除上一层的某个文件,并不会去删除,只会在这一层标记为该文件已经删除从而在容器运行的时候忽略这个文件
优势?
分层存储使得镜像的复用定制变得容易.可以使用之前的镜像为基础层,添加新的层,定制自己所需的内容,构建新的镜像

5.Docker容器

容器的概念?
容器是镜像运行时的实体,镜像的静态的定义,而容器可以被 操作:创建,启动,停止,删除,暂停等. 容器的实质是进程,与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间,因此容器可以拥有自己的root文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 ID 空间.
容器与镜像一样都是分层存储,每一个容器运行时,是以镜像为基础层,在其上创建一个当前容器的存储层,我们可以称这个为容器运行时读写而准备的存储层为容器存储层.
容器存储层生命周期?
容器存储层的生存周期和容器一样,容器消亡时,容器存储层也随之消亡。因此,任何保存于容器存储层的信息都会随容器删除而丢失。
解决方案:
容器不应该向其存储层内写入任何数据,容器存储层要保持无状态化。所有的文件写入操作,都应该使用 数据卷或者绑定宿主目录,在这些位置的读写会跳过容器存储层,直接对宿主(或网络存储)发生读写,其性能和稳定性更高。而数据卷的生存周期独立于容器,容器消亡,数据卷不会消亡。因此,使用数据卷后,容器删除或者重新运行之后,数据却不会丢失。

 

 

 

 

 

 

 

 

 

 

 

 


posted @ 2019-07-19 17:29  F凯歌  阅读(130)  评论(0编辑  收藏  举报