一起学Docker:Docker的镜像分层结构

通过docker pull 下载不同版本的Nginx

PS C:\Users\Administrator> docker pull nginx //下载默认的版本
Using default tag: latest
latest: Pulling from library/nginx
a2abf6c4d29d: Pull complete
a9edb18cadd1: Pull complete
589b7251471a: Pull complete
186b1aaa4aa6: Pull complete
b4df32aa5a72: Pull complete
a0bcbecc962e: Pull complete //开始是全量下载
Digest: sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
PS C:\Users\Administrator> docker pull nginx:1.20.2
1.20.2: Pulling from library/nginx
a2abf6c4d29d: Already exists //已经存在的分层不会在下载
da03644a1293: Pull complete
dcbfc6badd70: Pull complete
3f7ccff97047: Pull complete
49e31097680b: Pull complete
c423e1dacb26: Pull complete
Digest: sha256:03f3cb0afb7bd5c76e01bfec0ce08803c495348dccce37bcb82c347b4853c00b
Status: Downloaded newer image for nginx:1.20.2
docker.io/library/nginx:1.20.2

通过上面的操作,可以看出,镜像之间相同的部分是公用的,增量部分不会重复下载,这就是镜像分层的优势。

DockerHub中大部分镜像都将是基于官方发布的base镜像构建的,base镜像一般都是各种Linux发行版本的Docker镜像,比如:Ubuntu,Debian或者CentOS等,可以在docker hub里找到。

看一个比较形象的分层示意图:

在这里插入图片描述
多个镜像(Image)都从相同的 base 镜像构建而来,那么 只需在磁盘上保存一份 base 镜像;同时内存中也只需加载一份 base 镜像,通过Linux的联合文件系统( Union FS)就可以为所有容器服务了。而且镜像的每一层都可以被共享。

如果多个容器共享一份基础镜像,当某个容器修改了基础镜像的内容,其他容器的否也会被修改?答案是不会的,修改会被限制在单个容器内,其他容器与镜像是不会修改的(镜像文件是read-only的)。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦里藍天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值