Docker 使用什么校验和来缓存 COPY?

What checksum does Docker use for caching COPY?

我正在尝试调试 Docker 缓存问题,我想检查缓存是否应该匹配。

Step 7 : COPY myfile /home/me/myfile
 ---> daa0799b47df

以上ID代表什么?它似乎不是 md5 或 sha1 校验和的一部分。我可以 运行 命令来检查这个吗?

它是随机字节,十六进制编码。这是 https://github.com/moby/moby/blob/0eefae8e0db0c3c567e8807f09434a0da3fc1261/utils/utils.go#L171 and generated by https://github.com/moby/moby/blob/0eefae8e0db0c3c567e8807f09434a0da3fc1261/utils/utils.go#L180 返回的短格式。它不是校验和,再次是随机的。它只是用来识别图像和容器。

Docker 1.10+ introduced ID's based on secure content hashes.

为每个文件系统层的内容生成一个散列,然后为图像描述符生成一个散列。如果图像的任何组件发生变化,则哈希值也会发生变化。