docker学习笔记-03:docker的镜像原理
镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件。它包含运行某个环境所需的所有内容,包括代码、库、环境变量和配置文件。
一、镜像是什么
(一)、联合文件系统(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的镜像原理的更多相关文章
- docker学习笔记(3)- 镜像
简介 在docker学习笔记(1)- 架构概述一节中可以看到镜像是docker三大组件之一,可以将Docker镜像类比为虚拟机的模版. 镜像由多个层组成,每层叠加之后从外部看就像一个独立的对象,镜像的 ...
- Docker学习笔记之Docker的Build 原理
0x00 概述 使用 Docker 时,最常用的命令无非是 docker container 和 docker image 相关的子命令,当然最初没有管理类命令(或者说分组)的时候,最常使用的命令也无 ...
- docker学习笔记7:发布镜像到docker hub上
镜像创建好后,很重要的一个操作就是共享和发布.可以将自己创建的镜像发布到docker hub上,也可以发布到自己的私有docker hub上. 要想发布镜像到dokcer hub上,首先要在dokce ...
- Docker学习笔记 - 创建私有的镜像仓库
一.查找镜像仓库 https://hub.docker.com/ 二.下载镜像仓库 docker pull registry:2.6.2 三.安装镜像仓库 docker run -d -p 6000: ...
- Docker学习笔记(2)-docker镜像操作
本节将会涉及Docker的镜像操作. 1. 获取镜像 如何获取Docker Hub上的镜像?可通过docker pull命令获取,其格式为: docker pull [选项] [Docker Regi ...
- DOCKER 学习笔记7 Docker Machine 在阿里云实例化ECS 以及本地Windows 实例化虚拟机实战
前言 通过以上6小节的学习,已经可以使用DOCKER 熟练的部署应用程序了.大家都可以发现使用 DOCKER 带来的方便之处,因为现在的话,只是在一台服务器上部署,这样部署,我们只需要一条命令,需要的 ...
- DOCKER 学习笔记7 Docker Machine 建立虚拟机实战,以及错误总结
前言 通过以上6小节的学习,已经可以使用DOCKER 熟练的部署应用程序了.大家都可以发现使用 DOCKER 带来的方便之处,因为现在的话,只是在一台服务器上部署,这样部署,我们只需要一条命令,需要的 ...
- DOCKER 学习笔记8 Docker Swarm 集群搭建
前言 在前面的文章中,已经介绍如何在本地通过Docker Machine 创建虚拟Docker 主机,以及也可以在本地Windows 创建虚拟主机,也是可以使用的.这一节,我们将继续学习 Docker ...
- Docker学习笔记2: Docker 概述
一.什么是Docker Docker是基于Go语言实现的云开源项目. Docker 的主要目标是:"Bulid,Ship and Run Any App ,AnyWhere" , ...
- Docker学习笔记之Docker的数据管理和存储
0x00 概述 数据是应用程序重要的产出,所以很好的管理和存储数据,是对应用程序劳动结果的尊重.特别是在大数据时代,所有的数据都是重要的资产,保护好数据是每个开发者必须掌握的技能.我们知道,在 Doc ...
随机推荐
- javascript对象创建及继承
//****************************************************************************** //创建类的多种方式 //------ ...
- PAT T1009 Triple Inversions
树状数组判断三元逆序对~ #include<bits/stdc++.h> using namespace std; ; int a[maxn]; ]; long long l[maxn], ...
- nginx 的请求处理阶段
nginx处理的11个阶段 nginx处理用户请求的流程 接收用户请求头部之后 1 .匹配对应得location 2.是否进行限速 3.验证用户是否有权限访问该资源:和判断是否是盗链的请求 4.生成用 ...
- FormsAuthentication.HashPasswordForStoringInConfigFile方法再.net core中的替代代码
FormsAuthentication.HashPasswordForStoringInConfigFile()这个加密方法再.net core中不存在了,可以用下面的方式达到一样的加密效果 usin ...
- c++中的运算符重载operator1(翁恺c++公开课[30]学习笔记)
运算符重载规则: 只有已经存在的运算符才能被重载,不能自己制造一个c++中没有的运算符进行重载 重载可以在类或枚举类型内进行,也可以是全局函数,但int.float这种已有的类型内是不被允许的 不能二 ...
- matplotlib常见操作
import osimport numpy as npfrom PIL import Imageimport matplotlib.pyplot as plt img = Image.open(os. ...
- ApacheDbUtilsTest
ApacheDbUtilsTest package p1; import com.DataSourceUtil; import entity.Student; import org.apache.co ...
- PL-USB2-BLASTER 使用说明
PL-USB2-BLASTER 使用说明 PL-USB2-BLASTER就是USB BLATER II烧录器.官方文档在https://www.intel.com/content/dam/www/pr ...
- C#Winfrom实现Skyline画直线功能
C#Winfrom实现Skyline画直线功能 前言: 这里记录了我在学习Skyline二次开发中所遇到的问题,适合刚接触Skyline二次开发的同学查看使用,从逻辑到代码逐一详解,但是还是重在理解, ...
- 傅盛读书笔记:下一个Moonshot是什么?
猎豹移动CEO 傅盛 九月底,我有幸在硅谷拜访了苹果前CEO斯卡利.老人如今已经75岁高龄,但看起来仍充满活力.他花了一上午的时间跟我们沟通,非常谦和.平等.坦诚,给我留下了很深的印象.末了,给我们介 ...