Docker学习:理论基础之Docker镜像分层 | 容器和镜像的关系 | 写时复制与用时分配

前言

本讲是从Docker系列讲解课程,单独抽离出来的一个小节,重点介绍:镜像分层的意义,一起来探讨一下吧!

概述

1.站在镜像分层的角度考虑,什么是镜像?

就是把业务代码+可运行环境、进行整体的打包得到的一个只读文件。每迭代一个版本,打一次包。需要哪个版本,可以直接拉取运行。

再具体点:

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

举例说明:

通过docker pull 命令,下载下的tomcat 或 nginx镜像,是不是可以通过docker run 启动后,直接通过浏览器访问,与之配套的资源已经自动构建好。 

2.为什么要镜像分层?好处是什么?

一起回顾一个码头的场景:

古代的码头是不是要手挑肩扛,把货物一件件往小船上运?弊端很明显:工人可以多少私吞一点,效率也比较低

现在呢?都是一个大大的集装箱,一个大大的货轮。好处也很明显:效率高、集装箱货物之间彼此相互不影响

反思:码头上,每个集装箱,可以把他们理解为单独的一个镜像,Docker是什么?它就是那个大大的货轮。

上面的货物,有PHP的、Nginx的、Tomcat,多种镜像、(可以在基准镜像上迭代)多个版本每个版本只需做增量操作,每个镜像都可以拉出来独立运行,相互都不影响,是不是很Nice! 

3.如何创建docker镜像

docker官方仓库里面有大量的镜像,可以从中直接pull命令拉取。另外这些镜像都是原厂维护,可以得到及时的更新和修护。

我还可以通过编写Dockerfile,用FROM指定基准镜像后,自定义一些服务,然后重新bulid镜像,最后把它打包成一个自定义的新镜像。

一、现实中的镜像

1.所有镜像都起始于一个基础镜像层

该基础镜像,在Dockerfile中的体现就是FROM关键字后面的内容。

当进行修改或增加新的内容时,就会在当前镜像层之上,创建新的镜像层。无论这个镜像有多少层,对内每层的中间镜像都是各自独立的,对外他们又是一个统一的整体。

 对内是一层一层的(每家每户),对外统一视图(都是中国公民),都是只读的:

注:图片中的大背景框,就是基准镜像,类似于大轮船上的其中一个集装箱(文件是集装箱中的货物)。 

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值