Docker 有一个缓存,这很棒,但我在“docker build”输出中看到的只是:
---> Using cache
Run Code Online (Sandbox Code Playgroud)
或命令的输出(这意味着它没有使用缓存)。
在我的 Dockerfile 中执行一个步骤(一份 COPY)后,它显然没有使用缓存。但我相当确定它正在复制的文件夹中没有任何变化。(这是我们的应用程序,例如,即使我连续部署两次,我也会遇到无缓存的情况。)
有什么方法可以让 Docker 告诉我它认为发生了什么变化?
我知道 Docker 曾经为此检查时间戳,但这已在 Docker 1.8 中修复,我在这里使用 Docker 1.9.x。
使用二分查找,带有.dockerignore.
将一半文件添加到.dockerignore,并构建容器。如果它使用该步骤的缓存COPY,那么您知道更改的文件位于您忽略的集合中,否则您知道它位于另一半中。对发生更改的一组文件重复此测试,直到只剩下一个文件/文件夹。
(亲爱的lazyweb:想出一些方法来扩展Docker,以减轻这一切的痛苦!)
| 归档时间: |
|
| 查看次数: |
1766 次 |
| 最近记录: |