zoukankan      html  css  js  c++  java
  • Docker——镜像原理和镜像commit

    镜像是什么?

    镜像是一种轻量级 ,可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码,运行时,库,环境变量和配置文件

    UnionFS(联合文件系统)

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

    Union文件系统是Docker镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像

    特性:一次同时加载多个文件系统,但是从外部看,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录

    Docker镜像加载原理

    Docker的镜像其实是由一层一层的文件系统组成,这种层级的文件系统UnionFS。

    bootfs(boot file system) 主要包含bootloader和kernel,bootloader主要是引导加载kernel,Linux刚启动时,会加载bootfs文件系统,在Docker镜像的最底层是bootfs。

    这一层与我们典型的linux系统是一样的,包含boot加载器和内核。当boot加载完成后整个内核都在内存中了,此时内存的使用权已由bootfs转交给内核,此时系统也会卸载bootfs。

    rootfs(root file system),在bootfs之上。包含的就是典型的linux系统中的/dev,/proc,/bin,/etc等标准目录和文件

    对于一个精简的OS,rootfs可以很小,只需要包括最基本的命令,工具和程序即可,因为底层直接用Host的kernel。自己只需提供rootfs就行。对于不同的linux发行版本,bootfs基本是一致的,可以公用bootfs.

    所以虚拟机中的OS都是几个G,docker这个就几百M

    分层的镜像

    一个镜像由多个组件组成

    为什么Docker镜像要采用这种分层结构呢?

    最大的好处:共享资源

    commit操作补充

    docker commit 提交容器副本使之成为一个新的镜像

    docker commit -m="提交的描述信息"  -a="作者"  容器Id  要创建的目标镜像名:[标签名]       注意,这里改的是容器

  • 相关阅读:
    WampServer Mysql配置
    Java实现 蓝桥杯VIP 算法提高 陶陶摘苹果2
    Java实现 蓝桥杯VIP 算法提高 陶陶摘苹果2
    Java实现 蓝桥杯VIP 算法提高 陶陶摘苹果2
    Java实现 蓝桥杯VIP 算法提高 质因数2
    Java实现 蓝桥杯VIP 算法提高 质因数2
    Java实现 蓝桥杯VIP 算法提高 质因数2
    Java实现 蓝桥杯VIP 算法提高 质因数2
    Java实现 蓝桥杯VIP 算法提高 质因数2
    Java实现 蓝桥杯VIP 算法提高 前10名
  • 原文地址:https://www.cnblogs.com/zhaobobo001/p/15589783.html
Copyright © 2011-2022 走看看