【发布时间】:2015-03-05 14:54:29
【问题描述】:
有没有办法给 docker 镜像“应用补丁”,尤其是一个或多个 RUN、ADD 等命令?
例如,RUN 命令可能需要 20 分钟才能运行,它会下载、编译和安装二进制文件。是否可以对此进行比较并将其应用于另一个图像?
我能想到的唯一方法(我还没有尝试过)是运行docker diff,解析输出,创建一个tgz,然后在另一个Dockerfile 中使用tgz 作为ADD。
我了解这存在一些问题,例如如果事先调用了apt-get update,这可能会破坏二进制文件的预期动态库链接等。我可以接受,因为我的测试将失败,并表明我必须再次重建“差异”。
我也意识到可能存在冲突。我很乐意完全替换该文件。
此功能的原因是为了节省时间。例如有时需要更改早期的Dockerfile 命令,并且会破坏缓存。此外,尽管我尽量使它们相同以利用缓存,但两个不同 Dockerfile 中的上述命令并不总是相同。
【问题讨论】: