有什么办法来“打补丁”,以码头工人的形象,特别是一个或多个RUN,ADD等命令?
例如,一个RUN命令可能需要 20 分钟才能运行,即下载、编译和安装二进制文件。是否可以对其进行差异并将其应用于另一个图像?
我能想到的唯一方法(我还没有尝试过)是运行docker diff,解析输出,创建一个 tgz,然后将 tgz 用作ADD另一个Dockerfile.
我知道这存在一些问题,例如,如果apt-get update事先调用an可能会破坏二进制文件的预期动态库链接等。我对此没有意见,因为我的测试将失败,并将表明我必须重建再次“差异”。
我也意识到可能会有冲突。我很高兴完全替换文件。
使用此功能的原因是为了节省时间。例如,有时Dockerfile需要更改早期命令,并且会破坏缓存。此外,尽管我试图使它们相同以利用缓存,但两个不同 Dockerfile 中的上述命令并不总是相同的。
简短的回答是,不,你不能这样做。
长的答案是,只要有足够的动力,您也许能够编写出您想要的代码。我在这里编写了一些有关 docker 映像格式(以及用于操作这些映像的工具)的文档:
这可能会给您一些关于从哪里开始的想法。
就我个人而言,我怀疑这种努力是不值得的。
| 归档时间: |
|
| 查看次数: |
9205 次 |
| 最近记录: |