1. 联合文件系统

  • 概念

    UnionFS(联合文件系统)是一种分层,轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次次的提交来一层一层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem)。联合文件系统是docker镜像的基础,镜像可以通过分层来实现继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。

  • 特性

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

2.docker镜像加载原理

docker的镜像实际上由一层一层文件系统组成,这种层级的文件系统就是UnionFS,bootfs(boot file system)主要包含bootloader和kernel,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。这样最大的好处就是共享资源,比如多个镜像都从base镜像构建而来,那么宿主机只需要在磁盘上保存一个base镜像,就可以为所有容器服务了,而且镜像的每一层都可以被共享。支持通过拓展现有镜像,创建新的镜像。

docker镜像都是只读的,当容器启动时,一个新的可写层被加载到镜像的顶部,这一层通常被称之为容器层,容器层之下的都叫镜像层,所有对容器的改动,无论添加删除还是修改文件,都只会发生在容器中,只有容器层是可写的,容器层下面所有镜像层都是只读的。

Docker与联合文件系统的更多相关文章

  1. Docker 联合文件系统

    联合文件系统(UnionFS)是一种分层.轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several dir ...

  2. Docker核心实现技术(命名空间&控制组&联合文件系统&Linux网络虚拟化支持)

    作为一种容器虚拟化技术,Docker深度应用了操作系统的多项底层支持技术. 早期版本的Docker是基于已经成熟的Linux Container(LXC)技术实现的.自Docker 0.9版本起,Do ...

  3. docker命名空间、控制组及联合文件系统概念

    基本架构 命名空间 控制组 联合文件系统 docker底层依赖的核心技术主要包括操作系统的命名空间(Namespace).控制组(Control Groups).联合文件系统(Union File S ...

  4. Docker底层架构之联合文件系统

    联合文件系统(UnionFS)是一种分层.轻量级并且高性能的文件系统,它支持对文件系统的 修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several di ...

  5. docker容器技术基础之联合文件系统OverlayFS

    我们在上篇介绍了容器技术中资源隔离与限制docker容器技术基础之linux cgroup.namespace 这篇小作文我们要尝试学习容器的另外一个重要技术之联合文件系统之OverlayFS,在介绍 ...

  6. Docker(42)- 镜像原理之联合文件系统

    前言 学习狂神老师的 Docker 系列课程,并总结 镜像是什么 镜像是一种轻量级.可执行的独立软件保,用来打包软件运行环境和基于运行环境开发的软件 他包含运行某个软件所需的所有内容,包括代码.运行时 ...

  7. docker学习笔记(3)——联合文件系统与数据卷

    参考资料: 1.官网教程:https://docs.docker.com/reference/ 2.视频教程:https://www.bilibili.com/video/BV1og4y1q7M4?t ...

  8. 实战:docker搭建FastDFS文件系统并集成SpringBoot

    实战:docker搭建FastDFS文件系统并集成SpringBoot 前言 15年的时候,那时候云存储还远远没有现在使用的这么广泛,归根结底就是成本和安全问题,记得那时候我待的公司是做建站开发的,前 ...

  9. docker基于 aufs 文件系统

    docker的核心功能就是容器版本管理,在容器层实现了CVS版本管理,比如git那种可以commit/roll back 而AUFS就是其实现基础 AUFS可以实现文件系统的snapshot,这样对f ...

  10. 使用docker搭建FastDFS文件系统

    1.首先下载FastDFS文件系统的docker镜像 docker search fastdfs 2.使用docker镜像构建tracker容器(跟踪服务器,起到调度的作用): docker run ...

随机推荐

  1. 使用expected_conditions的url_changes方法判断是否登录成功

    使用expected_conditions的url_changes方法判断是否跳转页面登录成功 from selenium import webdriver from selenium.webdriv ...

  2. 内衣 ERP 系统 (Delphi)

    服装行业ERP系统,当时从开始实施推行,最后二次开发,源代码交接... 发几个截图看看 可配置的查询 这个功能几乎被我全改过... 后台报表配置 欢迎微信搜一搜 IT软件部落 关注公众号,你可以了解更 ...

  3. 流量特征提取工具NFStream

    目录 前言 NFStream NFStreamer Pandas Dataframe转换 CSV文件转换 NFStream特征提取 事后统计流特征提取 早期统计流特征提取 应用层可见性特征提取 系统的 ...

  4. vue前端分页多条件搜索

    vue前端分页多条件搜索 fliterData() { if (this.query_syscode || this.query_version || this.query_group || Stri ...

  5. MySQL之根据经纬度计算距离

    可以在MySQL层面使用自定义计算函数来使用 CREATE DEFINER=`xxx`@`%` FUNCTION `get_distance`( lat1 float,lon1 float,lat2 ...

  6. 使用nginx 解决开发过程中的跨域问题

    遇到的问题 在开发vue 前端程序时,我们会创建多个项目,比如用户管理为一个应用,系统管理为一个应用,这样多个应用势必需要开多个端口,这样问题就来了,我们在登录后会生成一个token,这个token我 ...

  7. 雪碧图的魔力:优化CSS动画场景

    什么是雪碧图 雪碧图(CSS Sprites),是一种网页图像处理技术,它将多个小图标或图像合并成一个大的图像文件.这种方法允许浏览器通过一次HTTP请求加载多个图像,而不是为每个小图标单独发起请求. ...

  8. openwrt交换机配置命令-swconfig

    swconfig swconfig 是交换接口 (switch) 配置命令. 交换机是二层设备,是我们用来配置vlan的必备利器. 使用swconfig list可以列出当前可用的 SWITCH 设备 ...

  9. tar 分卷压缩和解压缩

    示例将 jdk1.8.0_221 文件夹按 98m 进行分卷压缩和解压缩压缩: tar -czvf - jdk1.8.0_221/ |split -b 98m - jdk1.8.0_221.tar.g ...

  10. 离线部署yum依赖

    利用本地源解决在无网环境部署应用需要解决的问题: 应用需要哪些软件包? 如何把应用依赖的软件包制作成一个精简的本地源? 如何使用本地源? 第一个问题使用yum-utils解决,它带的repotrack ...