练涛

深刻理解 Docker 镜像大小

镜像共享关系

Docker 镜像说大不大,说小不小,但是一旦镜像的总数上来之后,岂不是对本地磁盘造成很大的存储压力?平均每个镜像 500 MB,岂不是 100 个镜像就需要准备 50 GB 的存储空间?

结果往往不是我们想象的那样,Docker 在镜像复用方面设计得非常出色,大大节省镜像占用的磁盘空间。Docker 镜像的复用主要体现在多个不同的 Docker 镜像可以共享相同的镜像层。

假设本地镜像存储中只有一个 ubuntu:14.04 的镜像,我们以两个 Dockerfile 来说明镜像复用:

FROM ubuntu:14.04
RUN apt-get update 
FROM ubuntu:14.04
ADD compressed.tar / 

假设最终 docker build 构建出来的镜像名分别为 image 1 和 image 2 ,由于两个 Dockerfile 均基于 ubuntu:14.04 ,因此,image 1 和 image 2 这两个镜像均复用了镜像 ubuntu:14.04 。 假设 RUN apt-get update 修改的文件系统内容为 20 MB,最终本地三个镜像的大小关系应该如下:

ubuntu:14.04 : 200 MB

image 1 :200 MB(ubuntu:14.04 的大小)+ 20 MB = 220 MB

image 2 :200 MB(ubuntu:14.04 的大小)+ 100 MB = 300 MB

如果仅仅是单纯的累加三个镜像的大小,那结果应该是:200 + 220 + 300 = 720 MB,但是由于镜像复用的存在,实际占用的磁盘空间大小是:200 + 20 + 100 = 320 MB,足足节省了 400 MB 的磁盘空间。在此,足以证明镜像复用的巨大好处。

来自:地址

posted @ 2020-10-29 11:25  练涛  阅读(575)  评论(0编辑  收藏  举报