狂神说-Docker基础-学习笔记-05 Docker镜像原理
狂神说-Docker基础-学习笔记-05 Docker镜像原理
镜像是什么
镜像是一种轻量级,可执行的独立软件包,用来打包运行环境和基于运行环境开发的软件,镜像包含了运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。
所有的应用,直接打包docker镜像,就可以直接跑起来。
如何得到镜像
- 从远程仓库下载
- 从他人处获得
- 自己制作
Docker镜像加载原理
UnionFS(联合文件系统)
UnionFS是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来层层叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem)。Union文件系统是Docker镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
特征:一次加载多个文件系统,但从外面看起来只使用一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录。
Docker镜像加载原理
docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统——UnionFS
各个镜像的组成可以想象成如下图片所示

bootfs(boot file system)主要包含BootLoader和kernel,linux系统刚启动时会加载bootfs,在Docker镜像的最底层是bootfs。这一层 典型的Linux/Unix系统是一样的,包含boot加载器和内核。当boot加载完成是整个内核就都在内存之中了,此时内存的使用权已经由bootfs转交给内核,此时系统也会卸载bootfs。
rootfs(root file system),在bootfs之上,包含的就是典型Linux系统中的 /dev、/proc、/bin、/etc 等标准目录和文件。rootfs就是各种不同操作系统的发行版,如Ubuntu、CentOS等
对于一个精简的OS,rootfs可以很小,只需要包含最基本的命令,工具和程序库就可以了,因为底层直接用Host的Kernel,自己只需要提供rootfs就可以了。由此可见对于不同的Linux发行版,bootfs基本是一致的,rootfs会有差别,因此不同的发行版可以共用bootfs——这就是Docker镜像只有几百MB甚至更少的原因
对于分层的理解
分层的镜像
在我们去拉取镜像的时候,观察日志的输出,可以看到是一层一层在下载!

这样的分层结构,最大的好处应该就是资源共享了。如上图所示,我在拉取Redis镜像是,如果有之前拉取的镜像中包含相同的适用于本镜像的层级就不会重新下载,而是选择进行复用。
理解
所有的Docker镜像都起始于一个基础镜像层,当进行修改或者增加新的内容是,就会在当前镜像层之上,创建新的镜像层。
如图所示,基于一个UbuntuOS创建了一个镜像,这是第一层镜像;如果在该镜像中添加Python包,就会在基础镜像层之上创建第二个镜像层;如果继续添加安全补丁,就会创建第三个镜像层。

在添加额外的镜像层的同时,镜像始终保存是当前所有镜像的组合。
可以想象成如下图示的样子。

每个镜像包含三个文件,而镜像包含了来自两个镜像层的6个文件。
要是对上图的镜像进行更新,更新的位置是文件5,而扫描已有镜像发现存在另一镜像层中的文件7就是文件5的更新版本,那么就不用再另外下载了,现在就由来自三个镜像层的6个文件组成新的镜像。

如果需要抽取出该镜像那么,需要抽取所有文件的就是下图所示的文件了

特点
Docker镜像都是只读的,当容器启动时,一个新的可写层会被加载到镜像的顶部——这一层就是通常所说的容器层,容器之下都是镜像层。

对容器进行操作、配置,如果将容器层和原来的镜像层进行打包,可以得到一个新的镜像。

狂神说-Docker基础-学习笔记-05 Docker镜像原理的更多相关文章
- [Docker] docker 基础学习笔记1(共6篇)
巩固一下yum: yum本身是centos自带的软件,可以删掉然后再重新安装. yum本身可以配置yum源,网络的,本地的都可以.之后安装docker需要配置一个扩展源. 从163的网址里边下载好 ...
- [Docker] docker 基础学习笔记3(共6篇)
首先我们安装好了ssh server之后, 我们需要将这个容器commit,然后启动这个被commit的image. 启动方式: docker run -d -p 2222:22 /usr/sbin/ ...
- [Docker] docker 基础学习笔记2(共6篇)
febootstrap 是一个自制image的一个第三方的工具,好像他们现在都要用这个. 安装还是挺方便的. yum -y install febootstrap febootstrap -i ...
- [Docker] docker 基础学习笔记6(共6篇)
这个迁移指的是docker整个系统的迁移,而不是说images存储位置迁移 docker info 查看docker的各项配置 首先做文件的迁移 使用rsync软件将docker的文件夹整体迁移到 ...
- [Docker] docker 基础学习笔记5(共6篇)
docker 配置文件的位置: centos : /etc/sysconfig/docker ubuntu: /etc/default/docker 现在比如我自己电脑上已经装好了docker,但 ...
- [Docker] docker 基础学习笔记4(共6篇)
离线安装nginx apache 如何启动war包 linux 离线升级内核 nginx和Apache的使用 nginx 的负载均衡配置 是如此的简单,比weblogic的要简单100 ...
- xml基础学习笔记05
Xpath快速解析 如题一样,本篇主要说说Xpath快速查找XML文档 * Xpatn.Xquery,是专门用来查询xml的语言 * 查询xml非常快 Xpatn.Xquery,是专门用来 ...
- 尚学堂JAVA基础学习笔记
目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...
- 【C#编程基础学习笔记】4---Convert类型转换
2013/7/24 技术qq交流群:JavaDream:251572072 教程下载,在线交流:创梦IT社区:www.credream.com [C#编程基础学习笔记]4---Convert类型转换 ...
- 【C#编程基础学习笔记】6---变量的命名
2013/7/24 技术qq交流群:JavaDream:251572072 教程下载,在线交流:创梦IT社区:www.credream.com [C#编程基础学习笔记]6---变量的命名 ----- ...
随机推荐
- java多线程之sleep 与 yield 区别
1.背景 面试中经常会被问到: sleep 与 yield 区别 2.代码 直接看代码吧! package com.ldp.demo01; import com.common.MyThreadUtil ...
- sublime 快速生成html基础代码
一.快速生成HTML5的头部信息的步骤: 1.Ctrl + N,新建一个文档: 2.Ctrl + Shift + P,打开命令模式,再输入 sshtml 进行模糊匹配,将语法切换到html模式: 3. ...
- vue(element)中使用monaco实现代码高亮
vue(element)中使用monaco实现代码高亮 使用的是vue语言,用element的组件,要做一个在线编辑代码,要求输入代码内容,可以进行高亮展示,可以切换各不同语言,而且支持关键字补全,还 ...
- 记一次 .NET某环境监测系统 崩溃分析
一:背景 1. 讲故事 前些天有位朋友找到我,说他们的程序崩溃了,也自己分析了下初步结果,让我帮忙再确认下,既然让我确认,那就开始dump分析之旅吧. 二:WinDbg 分析 1. 为什么会崩溃 wi ...
- 05-canvas绘制简单图形之三角形
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...
- SMU Autumn 2023 Round 1(Div.1)
SMU Autumn 2023 Round 1(Div.1) A. Set or Decrease(枚举) 题意就是你可以进行两种操作,将\(a_i-1\)或者令\(a_i\)等于\(a_j\),然后 ...
- cubeide汉化包地址
http://mirrors.ustc.edu.cn/eclipse/technology/babel/update-site 具体步骤看洋桃物联网入门30步的视频
- VS Code 代码片段指南: 从基础到高级技巧
前言 " 系列首发于公众号『非同质前端札记』 ,若不想错过更多精彩内容,请"星标"一下,敬请关注公众号最新消息. 今天咱们来聊聊 VS Code 里的自定义代码片段. 这 ...
- Drools与动态加载规则文件
Drools与动态加载规则文件 Drools简介 对系统使用人员来说: 对开发人员来说: Drools架构图 快速开始 Drools简介 Drools是一款基于Java的开源规则引擎,将规则与业务代码 ...
- SPSS25.0中文破解版安装教程及使用教程
目录 第一步,下载链接: 下载并解压,管理员身份运行SPSS 25 64bit.exe: 第二步,安装过程一路默认,安装路径可以改变,然后等待安装完成即可: 第三步,安装完成后,立即启动SPPS; 第 ...