有没有一种方法可以“应用补丁”到docker镜像,特别是其中一个或多个RUN、ADD等命令?
例如,一个RUN命令可能需要20分钟才能运行,它下载、编译和安装二进制文件。是否有可能对其进行差异化比较并将其应用于另一个镜像?
我想到的唯一方法(我还没有尝试过)是运行docker diff,解析输出,创建tgz,然后在另一个Dockerfile中使用tgz作为ADD。
我知道这样做会有问题,例如如果之前调用了apt-get update,可能会破坏二进制文件的预期动态库链接等。我没关系,因为我的测试将失败,并显示我必须重新构建“diff”。
我也意识到可能会存在冲突。我很高兴完全替换该文件。
这个功能的原因是为了节省时间。例如,有时早期的Dockerfile命令需要更改,这将破坏缓存。此外,尽管我尝试使它们相同以利用缓存,但在两个不同的Dockerfiles中,前面的命令不总是相同的。
例如,一个RUN命令可能需要20分钟才能运行,它下载、编译和安装二进制文件。是否有可能对其进行差异化比较并将其应用于另一个镜像?
我想到的唯一方法(我还没有尝试过)是运行docker diff,解析输出,创建tgz,然后在另一个Dockerfile中使用tgz作为ADD。
我知道这样做会有问题,例如如果之前调用了apt-get update,可能会破坏二进制文件的预期动态库链接等。我没关系,因为我的测试将失败,并显示我必须重新构建“diff”。
我也意识到可能会存在冲突。我很高兴完全替换该文件。
这个功能的原因是为了节省时间。例如,有时早期的Dockerfile命令需要更改,这将破坏缓存。此外,尽管我尝试使它们相同以利用缓存,但在两个不同的Dockerfiles中,前面的命令不总是相同的。