docker的图像层有什么好处?

时间:2015-09-12 09:27:21

标签: docker dockerfile

我是Docker的新手。基于阅读一些Docker文档,我计划将我的项目转换为Docker镜像,如下所示:

我的项目具有以下特性:

  • 基本操作系统几乎不需要更新,除非发生大操作系统问题,因此每2年更新一次基础操作系统。
  • 基础库可能只会更新6个月。
  • 图书馆每个月都会更新。
  • 项目代码每天更新一次。

因此我打算创建4张图片:

  • image1 - base os
  • image2 - 来自image1并添加基础库
  • image3 - 来自image2并添加库
  • image4 - 来自image3并添加项目代码

我的理解是,image4有4层。一旦我构建了一个新的image4,Docker只需要拉取layer4,因为1,2,3层与旧的image4相同。由于我的项目代码只是一些文本脚本,因此layer4应该非常小,因此拉新的image4应该非常快。

我的理解是否正确?

1 个答案:

答案 0 :(得分:1)

  

由于我的项目代码只是一些文本脚本,因此layer4应该非常小

Layer4会很小,但只有在之前已经将图像1拉到3之后,拉动image4才会很快。

结果image4不小,但是3个基本图像串联的结果。

另外,术语"层"不应掩盖docker文件中的每一行都会创建一个中间图像这一事实,使实际图像成为所有这些中间小图层的集合(由每个Dockerfile命令的执行产生)。
你可能有4" general"图层,但实际图像可能超过4层 您可以使用imagelayers.io

进行检查

我使用alias to cleanup old dangling images

alias drmiad='docker rmi $(docker images --filter "dangling=true" -q --no-trunc)'

我的build script通常包括:

. ../.bash_aliases

docker build -t sshd . || exit 1
drmiad 2> /dev/null