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

一、镜像是什么

(一)、联合文件系统(UnionFS):

  1、联合文件系统是docker镜像的基础,是一种分层的、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层叠加。

  2、联合文件系统的特点:一次同时加载多个文件系统,但是从外观来看,只能看到一个文件系统。联合加载会把各层的文件系统叠加起来,这样最终的文件系统会包含所有的目录和文件。

  3、docker进行可以通过分层来继承,基于基础镜像,可以制作各种具体的应用镜像。

(二)、镜像加载原理:

  1、docker的镜像实际上是由一层一层的文件系统组成,这种层级的文件系统是联合文件系统

  2、docker自底向上由两个层级构成:bootfs和rootfs。

  3、bootfs(boot file system)是docker镜像的最底层,主要包含bootloader和kernel,相当于linux内核加载器和linux内核。bootfs加载完成后内存使用权交给内核,此时系统会卸载bootfs。

  4、rootfs(root file system)就是各种不同的linux操作系统发行版,比如ubuntu和centos。在rootfs之上,是典型linux系统中的/dev,/etc,/bin等目录和文件。rootfs可以很小,共用宿主机的内核即可。

  5、镜像为什么采取分层结构:为了共享资源。有多个镜像都从相同的base镜像构建而来,那么宿主机只要在磁盘上保存一份base镜像,同时内存中也只需要加载一份base镜像,就可以为所有容器服务了。

二、镜像的特点

  1、docker镜像都是只读的。

  2、当一个容器启动时,一个新的可写层被加载到镜像的顶部,这一层通常叫做“容器层”,“容器层”之下的都叫做“镜像层”。

docker学习笔记-03:docker的镜像原理的更多相关文章

  1. docker学习笔记(3)- 镜像

    简介 在docker学习笔记(1)- 架构概述一节中可以看到镜像是docker三大组件之一,可以将Docker镜像类比为虚拟机的模版. 镜像由多个层组成,每层叠加之后从外部看就像一个独立的对象,镜像的 ...

  2. Docker学习笔记之Docker的Build 原理

    0x00 概述 使用 Docker 时,最常用的命令无非是 docker container 和 docker image 相关的子命令,当然最初没有管理类命令(或者说分组)的时候,最常使用的命令也无 ...

  3. docker学习笔记7:发布镜像到docker hub上

    镜像创建好后,很重要的一个操作就是共享和发布.可以将自己创建的镜像发布到docker hub上,也可以发布到自己的私有docker hub上. 要想发布镜像到dokcer hub上,首先要在dokce ...

  4. Docker学习笔记 - 创建私有的镜像仓库

    一.查找镜像仓库 https://hub.docker.com/ 二.下载镜像仓库 docker pull registry:2.6.2 三.安装镜像仓库 docker run -d -p 6000: ...

  5. Docker学习笔记(2)-docker镜像操作

    本节将会涉及Docker的镜像操作. 1. 获取镜像 如何获取Docker Hub上的镜像?可通过docker pull命令获取,其格式为: docker pull [选项] [Docker Regi ...

  6. DOCKER 学习笔记7 Docker Machine 在阿里云实例化ECS 以及本地Windows 实例化虚拟机实战

    前言 通过以上6小节的学习,已经可以使用DOCKER 熟练的部署应用程序了.大家都可以发现使用 DOCKER 带来的方便之处,因为现在的话,只是在一台服务器上部署,这样部署,我们只需要一条命令,需要的 ...

  7. DOCKER 学习笔记7 Docker Machine 建立虚拟机实战,以及错误总结

    前言 通过以上6小节的学习,已经可以使用DOCKER 熟练的部署应用程序了.大家都可以发现使用 DOCKER 带来的方便之处,因为现在的话,只是在一台服务器上部署,这样部署,我们只需要一条命令,需要的 ...

  8. DOCKER 学习笔记8 Docker Swarm 集群搭建

    前言 在前面的文章中,已经介绍如何在本地通过Docker Machine 创建虚拟Docker 主机,以及也可以在本地Windows 创建虚拟主机,也是可以使用的.这一节,我们将继续学习 Docker ...

  9. Docker学习笔记2: Docker 概述

    一.什么是Docker Docker是基于Go语言实现的云开源项目. Docker 的主要目标是:"Bulid,Ship and  Run Any App ,AnyWhere" , ...

  10. Docker学习笔记之Docker的数据管理和存储

    0x00 概述 数据是应用程序重要的产出,所以很好的管理和存储数据,是对应用程序劳动结果的尊重.特别是在大数据时代,所有的数据都是重要的资产,保护好数据是每个开发者必须掌握的技能.我们知道,在 Doc ...

随机推荐

  1. javascript对象创建及继承

    //****************************************************************************** //创建类的多种方式 //------ ...

  2. PAT T1009 Triple Inversions

    树状数组判断三元逆序对~ #include<bits/stdc++.h> using namespace std; ; int a[maxn]; ]; long long l[maxn], ...

  3. nginx 的请求处理阶段

    nginx处理的11个阶段 nginx处理用户请求的流程 接收用户请求头部之后 1 .匹配对应得location 2.是否进行限速 3.验证用户是否有权限访问该资源:和判断是否是盗链的请求 4.生成用 ...

  4. FormsAuthentication.HashPasswordForStoringInConfigFile方法再.net core中的替代代码

    FormsAuthentication.HashPasswordForStoringInConfigFile()这个加密方法再.net core中不存在了,可以用下面的方式达到一样的加密效果 usin ...

  5. c++中的运算符重载operator1(翁恺c++公开课[30]学习笔记)

    运算符重载规则: 只有已经存在的运算符才能被重载,不能自己制造一个c++中没有的运算符进行重载 重载可以在类或枚举类型内进行,也可以是全局函数,但int.float这种已有的类型内是不被允许的 不能二 ...

  6. matplotlib常见操作

    import osimport numpy as npfrom PIL import Imageimport matplotlib.pyplot as plt img = Image.open(os. ...

  7. ApacheDbUtilsTest

    ApacheDbUtilsTest package p1; import com.DataSourceUtil; import entity.Student; import org.apache.co ...

  8. PL-USB2-BLASTER 使用说明

    PL-USB2-BLASTER 使用说明 PL-USB2-BLASTER就是USB BLATER II烧录器.官方文档在https://www.intel.com/content/dam/www/pr ...

  9. C#Winfrom实现Skyline画直线功能

    C#Winfrom实现Skyline画直线功能 前言: 这里记录了我在学习Skyline二次开发中所遇到的问题,适合刚接触Skyline二次开发的同学查看使用,从逻辑到代码逐一详解,但是还是重在理解, ...

  10. 傅盛读书笔记:下一个Moonshot是什么?

    猎豹移动CEO 傅盛 九月底,我有幸在硅谷拜访了苹果前CEO斯卡利.老人如今已经75岁高龄,但看起来仍充满活力.他花了一上午的时间跟我们沟通,非常谦和.平等.坦诚,给我留下了很深的印象.末了,给我们介 ...