S++

千线一眼

导航

Docker入门(6):镜像

什么是镜像

镜像(Mirroring)是一种文件存储形式,是冗余的一种类型,一个磁盘上的数据在另一个磁盘上存在一个完全相同的副本即为镜像。
镜像文件一般是用于电脑主机系统的安装和维护,和日常用到的zip压缩文件的性质差不多。镜像文件包含的内容也有很多,比如驱动文件、系统文件、引导文件等等,镜像文件也可以储存在光盘、U盘等形式中,并且镜像文件的格式也多种多样。

Docker镜像加载原理

联合文件系统(UnionFS)

  • 概述

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

镜像加载原理

docker的镜像加载就是借助联合文件系统(UnionFS)这种技术
docker主要是bootfs(boot fire system)和rootfs(root file system)

  • bootfs(boot fire system)

    bootfs主要包括bootloader和Kernel,bootloader主要引导加载Kernel,Linux刚启动的时候会加载bootfs文件系统,在docker镜像的最底层就是bootfs。
    这一层与典型的Linux和Unix是一样的,包含boot加载器和内核。当boot加载完成后整个内核就在内存之中了,此时内存的使用权已经由bootfs转交给内核,系统也会删除bootfs

  • rootfs(root file system

    rootfs在bootfs之上,包含的就是典型的Linux系统中的/dev、/proc、/bin、/etc等标准目录和文件。rootfs就是各种的操作系统发行版,例如CentOS,Ubuntu等。

对于一个精简的操作系统来说,rootfs可以很小,因为只需要包含必要的命令、工具、程序库就行。而对于不同版本的Linux发行版,bootfs基本一致,因此可以使用公用bootfs来提高空间利用率。
docker镜像都是只可读的,当容器启动时,一个新的可写层被加载到镜像顶部
这一层我们叫容器层容器层之下都是镜像层

提交镜像

  • 命令 docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

    可选项
      -a, --author string    # 作者 (e.g., "John Hannibal Smith <hannibal@a-team.com>")
      -c, --change list      # 对创建的映像应用Dockerfile指令
      -m, --message string   # 提交信息
      -p, --pause            # 在提交期间暂停容器(默认为true)
    

posted on 2022-02-17 15:57  S++  阅读(104)  评论(0)    收藏  举报