Docker如何计算每个层的散列? 这是确定性的吗?

我试图find有关Docker官方文档的信息,但没有成功。

在计算每个提交/图层的散列时,Docker会考虑哪些信息?

很明显,Dockerfile中的行是散列的一部分,当然还有父提交散列。 但是在计算这个散列时还有其他的东西需要考虑吗?

具体的用例:假设我有两个devs在不同的机器上,在不同的时间点(因为这个,不同的docker守护进程和不同的caching)运行$ docker build ... docker $ docker build ...针对同一个Dockerfile。 FROM ...指令会给它们相同的起始点,但是每个操作结果的结果散列值是否在同一个散列表中? 这是确定性的吗?