博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
011、镜像的分层结构(2018-12-28 周五)
阅读量:6311 次
发布时间:2019-06-22

本文共 869 字,大约阅读时间需要 2 分钟。

参考
 
Docker支持通过扩展现有镜像,创建新的镜像
 
实际上Docker Hub上99%的镜像都是在base镜像的基础上,安装和配置软件后构建出来的。
 
FROM debian                    #    镜像不在是从scratch开始,而是从debian base开始
RUN apt-get install emacs      #    安装emacs
RUN apt-get install apache2    #    安装apache2
CMD ["/bin/bash"]              #    容器启动时运行bash
 
构建过程如下图:
 
    
 
 
新镜像是从base镜像一层一层叠加生成的。每安装一个软件,就在现有镜像的基础上增加一层
 
Docker为什么要分这么多层 -- 
共享资源
 
比如好多镜像都是从相同base的基础上构建出来来,那么 Docker Host上只需要保存一份base即可,同时内存中也只需加载一份base镜像,镜像的每一层都可以被分享,
 
Copy-on-Write
 
多个容器共享一个基础镜像,那么当某个容器修改了配置文件,其他容器会受影响吗? 不会
 
容器在启动时,会创建一个新的可写层,加载到镜像的顶部。这一层通常被称作容器层,容器层下面的是镜像层
 
对容器的所有改动,都只发生在容器层,下面的镜像层是只读的。
 
 
所有镜像层叠加起来组成一个统一的文件系统。如果不同层中有一个相同的文件,,比如 /a  ,上层的 /a  会覆盖下层的 /a ,用户只能看到最靠近顶端镜像层中的/a 
 
1、
添加文件 -- 新文件会被添加到容器层中
2、
读取文件 -- 在镜像层中从上往下找,找到后不再继续向下查找
3、
修改文件 -- 在镜像层中从上往下找,找到后复制到容器层进行修改
4、
删除文件 --  在镜像层中从上往下找,找到后在容器层将该文件标记为删除
 
只有当需要修改时才从镜像层复制一份到容器层,这个特性叫做 Copy-on-Write 。容器层保存的是镜像变化的部分,并不会对镜像本身进行修改
 
 

转载于:https://www.cnblogs.com/www1707/p/10193565.html

你可能感兴趣的文章
登陆功能的实现
查看>>
植入这款智能传感器,从此家里便多了个“保姆”
查看>>
ASP.NET WebForm与MVC优缺点
查看>>
树状数组三种模型
查看>>
Unitils集成DBUnit的问题-解决方案
查看>>
解决office2007安装程序找不到office.zh-cn\Setup.xml OFFICELR.CAB OFFICEMUI.MSI OFFICEMUI.XML SETUP.XML...
查看>>
通过实战测试无线网络的速度
查看>>
Nice Messager隐私权政策
查看>>
寻“J”计划,大朋用创意发现China Joy的另一种精彩
查看>>
阿里云第12期贡献者荣誉榜公布,听说此榜有故事
查看>>
AR交互将为早教机器人打开一片蓝海
查看>>
c++ 11 移动语义、std::move 左值、右值、将亡值、纯右值、右值引用
查看>>
判断一个数字是否为素数的基于C语言的算法
查看>>
percona-toolkit工具检查mysql复制一致性及修复不一致性
查看>>
uC/OS-II源码分析(二)
查看>>
为什么连接字符串一定要用StringBuilder(介绍CLR Profiler)
查看>>
bootstrap2
查看>>
一张图让你学会Python
查看>>
nginx php动态编译加载模块.
查看>>
第5.6单元作业
查看>>