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