,," /> " />

目 录CONTENT

文章目录

Docker镜像分层

Administrator
2024-03-05 / 0 评论 / 0 点赞 / 12 阅读 / 3254 字

分层镜像

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

  Title:分层镜像原理
  Container->Image1: references parent
  Image1-->Image2: reference parent
  Container-->Image2: reference parent
  Image2->>Base Image: 基础环境
  Base Image->>bootfs: 构建镜像运行的操作系统环境
  bootfs->Kernel: 上层的镜像提供kernel内核

  Note right of Kernel: AUFS,LXC,Bootfs,

分层原则

1. • Dockerfile中的每个指令都会创建一个新的镜像层

2. • 镜像层将被缓存和使用

3. • 某一层的镜像缓存失效后它之后的镜像层缓存都会失效 :

- https://cloud.tencent.com/developer/article/1633016

注意:

> (1)如上图所示,Docker镜像层都是只读的,容器层是可写的。当容器启动时,一个新的可写层被加载到镜像顶部,这一层通常被称作“容器层”,“容器层”之下的都叫做“镜像层”。

> (2)对容器的所有更改(无论添加、删除、还是修改文件)都只会发生在容器层中。上图中只有透明的writable Container是暴露给用户的。

分层结构

1. base image(基础/系统镜像层):构建镜像运行的操作系统环境

2. add image(run指令运行的镜像层):比如nginx镜像的yum安装模块,或者nginx编译安装的指令,使用镜像封装每一个run执行命令

3. Container(可读写执行层)

总结:

1. docker镜像层位于bootfs之上

2. 每一层镜像成为base image/底包(操作系统环境变量)比如centos dbian

3. 容器层(可读可写),在最顶层。是docker server提供给docker client

4. 容器层以下都是readonly只读,docker将readonly的FS层成为image

镜像加载

Docker的镜像是由一层一层的文件系统组成,也就是以UnionFS(联合文件系统)堆叠构成。

- rootfs(root file system)包含的是典型Linux系统中的/dev、/proc、/bin、/etc等标准目录和文件,其实rootfs就是各种不同的操作系统发行版,比如Ubuntu、Centos等等。

- bootfs(boot file system)主要包含bootloader和kernel、bootloader主要是引导加载kernel、Linux刚启动时候加载bootfs文件系统,在Docker镜像的最底层是引导文件系统bootfs。 这一层与典型的Linux/Unix系统是一样的,包含boot加载器和内核。当boot加载完成后整个内核就在内存中了,内存的使用权由bootfs转交给内核,此时系统也会写在bootfs。

- 至此,我们就比较容易理解docker容器其实就是一个简易版的Linux环境,它包含root用户权限、进程空间、用户空间和网络空间、以及运行在它上面的应用程序。

参考:分层存储和镜像精简

image-20220817190733980.png

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区