当前位置: 首页 > news >正文

容器文件系统

1、容器文件系统

每个容器都有对应的一个镜像,镜像是容器的静态形式,镜像包含容器运行所需要的各种二进制文件,库文件,配置文件等等,由这些文件打包共同组成容器的镜像。

在容器里面执行 df / 命令:
在这里插入图片描述
可以看到容器根目录的文件系统时overlay,而不是传统的ext4或者NFS之类的。那么这个overlay文件系统是什么呢?
容器为什么要使用这么个文件系统呢?

首先假设容器使用ext4文件系统会有什么问题呢?

每个容器都需要一个镜像,但是每个容器所依赖的操作系统库文件什么都是差不多的,如果每个容器都单独下载维护这些文件,磁盘资源和网络资源都会造成一定的浪费。
比如说,假设一个镜像文件的大小是500MB,那么100个容器的话,就需要下载500MB*100= 50GB的文件,并且占用50GB的磁盘空间。
特别是这样的情况:假如这100个容器镜像都是基于”ubuntu:18.04”的,每个容器镜像只是额外复制了50MB左右自己的应用程序到”ubuntu: 18.04”里,那么就是说在总共50GB的数据里,有90%的数据是冗余的。
在这里插入图片描述
因此为了解决这个问题,容器使用OverlayFS文件系统。

2、OverlayFS

OverlayFS是联合文件系统的一种实现,什么是联合文件系统呢?就是指可以将多个目录里的文件挂载在同一个目录上,这个特性正好可以解决容器镜像的问题。
在这里插入图片描述

这个OverlayFS有两层,分别是lowerdir和upperdir。lowerdir里是容器镜像中的文件,对于容器来说是只读的;upperdir存放的是容器对文件系统里的所有改动,它是可读写的。

比如,我们可以把ubuntu18.04这个基础镜像的文件放在一个目录ubuntu18.04/下,容器自己额外的程序文件app_1_bin放在app_1/目录下。

然后,我们把这两个目录挂载到container_1/这个目录下,作为容器1看到的文件系统;对于容器2,就可以把ubuntu18.04/和app_2/两个目录一起挂载到container_2的目录下。

但是假设某个镜像需要对库文件进行定制化配置呢?此时就会引入写复制技术,专门复制一份要修改的文件,然后任由对其进行更改,并不会影响原来的文件。

http://www.dtcms.com/a/111308.html

相关文章:

  • 【python中级】关于Cython 的源代码pyx的说明
  • 面试算法高频02-树
  • Elasticsearch使用示例
  • 第五讲(下)| string类的模拟实现
  • vector的介绍与代码演示
  • 27信号和槽_自定义信号(2)
  • 语文常识推翻百年“R完备、封闭”论
  • 神马系统8.5搭建过程,附源码数据库
  • 电子商务类型
  • 15使用按钮实现helloworld(2)
  • 智能安卓手机清理工具,深度优化内存卡顿解决方案
  • OCR迁移
  • 蓝桥杯2024年第十五届省赛真题-R 格式
  • 安卓手机的重复文件清理工具
  • MySQL学习笔记——MySQL下载安装配置(一)
  • xpath定位
  • 康拓展开补充:逆康拓展开
  • 强化中小学人工智能教育:塑造未来社会的科技基石
  • Linux C++编译及g++使用操作
  • Python集合(五)
  • PostgreSQL 删除数据库
  • Vanna:用检索增强生成(RAG)技术革新自然语言转SQL
  • 深入解析大型应用架构:以dify为例进行分析
  • goto在Java中的用法
  • 架构与大数据-RabbitMQ‌和Kafka的技术实现异同及落地场景上的异同
  • 数据库相关简介
  • MINIQMT学习课程Day9
  • leetcode 代码随想录 数组-区间和
  • Cortex-M 上编写汇编函数
  • 01-STM32(介绍、工具准备、新建工程)p1-4