Docker 概述(背景 价值 目的 原理)


Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。
在这里插入图片描述

下面将从四个方面进行介绍

背景、价值

背景

过去一款产品的开发和上线需要两套环境,分别是应用环境和配置环境
在开发——运维的过程中环境配置非常麻烦,比如要发布一个war项目,需要配置的环境很多包括项目自带环境安装,服务器配置应用环境等等并且不能跨平台进行,这给不论是前端开发还是后端运维都带了很大的压力。

价值

正是基于此麻烦的出现,Docker应运而生,现在通过Docker可以实现开发打包部署上线一整套流程由一人完成即可,大大减少不必要的麻烦。比如现在发布一个war项目只需以下几步
java----jar----打包项目带上环境(镜像)------(Docker仓库)------下载发布的镜像----直接运行

目的

之前的虚拟机技术分为内核,环境,应用三大块,其主要弊端有

1.资源占用
2.冗余步骤多
3.启动很慢

而Docker就是要解决这些问题,它所使用的容器化技术特点就是

不是模拟一个完整的虚拟机
而是将原先的三大块整合成两块
内核 (环境+应用) ——>容器

能做到以下几点:

1.更快速的交付和部署
2.传统 一段帮助文件
docker 打包镜像发布测试
3.更快速的升级和扩缩容
4.更简单的系统运维
5.在容器化之后 我们的开发和环境高度一致
6.更高效的计算资源利用
7.docker 是内核级别的虚拟化 可以在一个物理机上运行很多实例

扫描二维码关注公众号,回复: 11442158 查看本文章

原理

Docker原理

核心思想

过去比如一个jre项目,它所涉及到的可能会有多个应用端口冲突,交叉污染等
Docker的核心思想就是隔离,集装箱思想
打包装箱 每个箱子是互相隔离的
通过Docker可以把n个项目同时放在一个服务器,并且不会相互污染

基本组成

Docker的组成可以简单理解为以下三个部分
客户端 docker服务器 远程仓库
镜像 image 相当于模板 可以通过模板创建容器服务 可以创建多个镜像最终服务运行在容器中
容器 container 利用容器技术 独立运行一个或者一个组应用 通过镜像来创建
仓库 repository 存放镜像的地方 分为公有和私有 dcokerhub

底层原理

docker基于golang开发,是一个开源引擎

1.架构
docker使用的是C/S架构,简单来说就是运行的整一个过程就是
docker的守护进程运行在主机上——>通过Socket从客户端访问——>sever收到client指令

在这里插入图片描述
2.运行原理
开始——>docker寻找镜像——>判断本机镜像——>使用/仓库下载——>找到下载到本地

遵行的还是隔离这个核心思想

虚拟机与docker比较

虚拟机
安装Vmware
VM linux centos原生镜像
隔离 开启多个虚拟机 分钟级

Docker
容器技术 虚拟化技术
隔离 镜像(最核心的环境)小巧 秒级

此外
1.传统虚拟机有一个完整的操作系统,需要像正常宿主机一样安装大量文件系统
2.docker互相隔离 每个容器内都有一个自己的文件系统 互不影响
容器内的应用直接运行在宿主机的内容 容器是没有自己内核的 没有虚拟硬件

为什么docker比虚拟机快
docker 有着比虚拟机更少的抽象层
docker利用的是宿主机的内核 VM需要时GuestOS
新建一个容器的时候,不需要重新加载一个操作系统的内核

在这里插入图片描述

镜像原理

镜像是一种轻量级的、可执行的独立软件包。用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件

文件系统

UuionFS(联合文件系统)是一种分层、轻量级并且高性能的文件系统,他支持对文件系统的修改作为一次提交来层层叠加,同时可以将不同目录挂载到同一个虚拟文件系统下。UnionFS是Docker镜像的基础

特点:
一次加载多个文件系统,但从外面看起来只能看到一个文件系统,联合加载会把各层文件胸痛叠加起来,这样最终文件系统会包含所有底层的文件和目录

镜像加载原理

bootfs主要包含bootloader和kernel,bootloader主要引导加载kernel,Linux刚启动的时候会加载bootfs文件系统,在Docker最底层是bootfs。这一层与传统的Linux是一样。当bootfs加载完后整个内核都在内存中,此时内存的使用权已经转交给了内核,系统会卸载bootfs
rootfs在bootfs之上,就是操作系统

在这里插入图片描述
在这里插入图片描述

分层原理

现有的Docker镜像都起源于一个基础镜像层,当进行修改时,就会在当前镜像层之上,创建新的镜像层
比如
基于CentOS创建一个镜像这就是第一层,在该镜像中添加jdk包就是第二层,再添加一个安全补丁,就是第三层

在这里插入图片描述
特点:
Docker镜像只可读,当容器启动时一个新的可写层被加载到进行镜像的顶部,这一可写层就叫做容器层
下图很好的展示了容器的特点和镜像分层原理

在这里插入图片描述

参考来源
https://www.bilibili.com/video/BV1og4y1q7M4?p=24

猜你喜欢

转载自blog.csdn.net/qq_46595591/article/details/107366739