docker的图像层有什么好处?

我是Docker的新手。 基于阅读一些Docker文档,我打算按照以下devise将我的项目转换为Docker镜像:

我的项目有以下几点:

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

因此,我打算创build4个图像:

  • image1 – 基本操作系统
  • image2 – 从image1中添加基础库
  • image3 – 从image2中添加库
  • image4 – 从image3中添加项目代码

我的理解是,image4有4层。 一旦我build立一个新的image4,Docker只需要拉第四层,因为第1,2,3层和旧的image4是一样的。 由于我的项目代码只是一些文本脚本,因此layer4应该是非常小的,因此拉一个新的image4应该是非常快的。

我的理解是正确的吗?

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

Layer4将会很小,但是如果之前已经拉出图像1到3,拉动image4将会很快。

由此产生的image4不会很小,而是3个基本图像串联的结果。

此外,术语“图层”不应该掩盖docker文件中的每一行都会创build中间图像的事实,使得实际图像成为所有那些中间小图层的集合(由执行每个Dockerfile命令产生)。
你可能有4个“通用”层,但实际的图像可能由4层以上组成。
你可以用imagelayers.io来检查

我使用别名来清理旧的悬挂图像 :

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

我的构build脚本通常包括:

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