镜像的分层结构

Docker Hub 中 99% 的镜像都是通过在 base 镜像中安装和配置需要的软件构建出来的。比如我们现在构建一个新的镜像,Dockerfile 如下:

  • 新镜像不再是从 scratch 开始,而是直接在 Debian base 镜像上构建。
  • 安装 emacs 编辑器。
  • 安装 apache2。
  • 容器启动时运行 bash。

可以看到,新镜像是从 base 镜像一层一层叠加生成的。每安装一个软件,就在现有镜像的基础上增加一层。

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

最大的一个好处就是 - 共享资源。

比如:有多个镜像都从相同的 base 镜像构建而来,那么 Docker Host 只需在磁盘上保存一份 base 镜像;同时内存中也只需加载一份 base 镜像,就可以为所有容器服务了。而且镜像的每一层都可以被共享,我们将在后面更深入地讨论这个特性。

这时可能就有人会问了:如果多个容器共享一份基础镜像,当某个容器修改了基础镜像的内容,比如 /etc 下的文件,这时其他容器的 /etc 是否也会被修改?

答案是不会!
修改会被限制在单个容器内。
这就是我们接下来要学习的容器 Copy-on-Write 特性。

Copy-on-Write 特性

当容器启动时,一个新的可写层被加载到镜像的顶部。
这一层通常被称作“容器层”,“容器层”之下的都叫“镜像层”,所有对容器的改动 - 无论添加、删除、还是修改文件都只会发生在容器层中。

这样就解释了我们前面提出的问题:容器层记录对镜像的修改,所有镜像层都是只读的,不会被容器修改,所以镜像可以被多个容器共享。

容器学习 之 镜像的分层结构(六)相关推荐

  1. 镜像的分层结构 - 每天5分钟玩转容器技术(11)

    Docker 支持通过扩展现有镜像,创建新的镜像. 实际上,Docker Hub 中 99% 的镜像都是通过在 base 镜像中安装和配置需要的软件构建出来的.比如我们现在构建一个新的镜像,Docke ...

  2. 容器学习 之 镜像命令(九)

    images 显示镜像列表 root@ubuntu:/home/yj# docker images REPOSITORY TAG IMAGE ID CREATED SIZE my-image late ...

  3. Docker : Docker镜像的分层结构

    1.美图 2.概述 3.base镜像 base 镜像简单来说就是不依赖其他任何镜像,完全从0开始建起,其他镜像都是建立在他的之上,可以比喻为大楼的地基,docker镜像的鼻祖. base 镜像有两层含 ...

  4. 容器学习Day09-理解容器镜像

    目录 前言 一.理解容器镜像 1.什么是容器镜像? 2.容器镜像结构 3.容器镜像技术实现 二.镜像仓库 1.Repository 2.Registry 三.镜像的拉取和删除 1.查找镜像 2.拉取镜 ...

  5. 5、《每天5分钟玩转Docker容器技术》学习--Docker镜像

    ------------------------------------重要说明------------------------------------ 本文内容都是参考Cloudman系列进行学习, ...

  6. Docker容器(配置+镜像建立及优化+镜像加速器制作)

    一.docker简介 Docker是管理容器的引擎. Docker为应用打包.部署平台,而非单纯的虚拟化技术 1.VM vs Container 2.传统虚拟机和容器的技术对比 3.容器是如何工作的 ...

  7. linux内核镜像的分层,Docker镜像分层的原理详解

    base镜像 base镜像有两层含义: 不依赖其他镜像,从scratch构建 其他镜像可以之为基础进行扩展 所以,base镜像一般都是各种Linux发行版本的Docker镜像,比如:Ubuntu,De ...

  8. 2.Docker容器学习之新生入门必备基础知识

    文章目录 0x02 Docker 核心概念 1.镜像 [image] 2.容器 [Container] 3.仓库 [Repository] 0x03 Docker 数据管理 1.数据卷 2.数据卷容器 ...

  9. 容器学习 之 base镜像(四)

    上一节我们谈到了容器的组件,镜像是 Docker 容器的基石,容器是镜像的运行实例,有了镜像才能启动容器. 这里我们先从base镜像开始一步步了解镜像的内部构造,镜像的分层,镜像的分发和管理. 我们以 ...

最新文章

  1. Java基础知识强化之IO流笔记03:throws的方式处理异常
  2. python selenium p_Python爬虫(二十一)_Selenium与PhantomJS
  3. Excel数据拆分-分列
  4. css媒体查询标准,CSS 媒体查询 - 实例
  5. 你必须拥有的Python调试神器
  6. 04_Pytorch生态、PyTorch能做什么、PyTorch之Autograd、autograd案例、GPU加速案例
  7. 如何修改浏览器的默认滚动条样式
  8. 计算机网络通信选择题,计算机网络教(学)案通信技术选择题试题题库完整
  9. 面对一个全新的环境,作为一个Mysql DBA,首先应该了解什么?
  10. 拓端tecdat|用Rapidminer做文本挖掘的应用:情感分析
  11. 详解BILSTM-CRF模型结构进行命名实体识别
  12. MATLAB求解标准差
  13. BZOJ2330【SCOI2011】糖果
  14. Intel Edison 第一次使用的更新
  15. excel 锁定第一行
  16. 关于开机USB电涌15秒关机的另类解决方法
  17. excel去除重复处理
  18. Android系统介绍与框架
  19. 算法(algorithm) 技能树测评
  20. java swing+mysql简单零件销售管理系统、订货决策系统

热门文章

  1. C++使用ADO存取图片
  2. 从新冠疫情出发,漫谈 Gossip 协议
  3. 经典永驻,重温设计模式 |硬核!
  4. 看完这篇还不清楚Netty的内存管理,那我就哭了!
  5. RabbitMQ管理(4)——应用管理
  6. 数据结构--图(Graph)详解(四)
  7. 【音视频技术与全球化】
  8. NCMMSC2021喊你开赛!汉语长短视频直播语音关键词竞赛正式启动!
  9. 揭秘微信「扫一扫」识物为什么这么快?
  10. 2019腾讯科学WE大会:在小宇宙里看见大宇宙的轮廓