深刻理解 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 的磁盘空间。在此,足以证明镜像复用的巨大好处。
来自:地址