该章的笔记只对稍微难一点的知识点做记录,简单的就不会进行赘述了。
镜像包含:镜像层、元数据信息(entrypoint等信息)
悬虚镜像:没有标签的镜像
产生原因:构建的新镜像A,镜像A取名字时与一存在的镜像B重名。镜像B此时就是悬虚镜像。
悬虚镜像
命令:docker image prune悬虚镜像
及没有起容器的镜像:docker image prue -a悬虚镜像
:docker image ls --filter dangling=truedocker镜像是由一层层耦合的镜像组成的。整体单个同一对象称为“镜像”。
如何实现镜像堆栈,以及对镜像层对外保持统一的文件系统?
多个 镜像之间会共享镜像层、用以节省空间。
上图中 Already exists显示共享镜像层一存在该层镜像。
每个镜像都有个一个唯一ID,称为镜像内容散列值
,它是根据镜像内容进行加密得到的加密散列值。任何内容改动都会改变散列值
。
镜像在拉取、推送时会对镜像层进行压缩、用以节省存储空间和网络带宽。但是压缩前后docker hub都会对镜像重新进行散列值计算,导致无法进行校验。*压缩不代表分层镜像包含内容值改变)。
每个镜像层包含一个分发散列值
,在传输过程中没层同时包含一个分发散列值
会检验拉取镜像是否被修改过,不受镜像压缩影响。
这种模型提升了镜像的安全性,在拉取和推送后可确认内容一致。