我有一个docker容器,其中包含一个批处理,该批处理进行一些计算并将结果存储在容器内的/data
中。每当启动应用程序时,它都需要从/data
出于某种原因,我无法制作/data
某种卷或外部存储,但是它必须位于容器内部。
为了不必多次进行计算,我尝试在每次运行批处理后根据/data
的实际状态创建一个新图像。
/data
很大,并且包含许多文件,但是在执行一批处理后,该目录上的更改很小。所以我想达到这样的层堆栈:
Update run +... (some MB)
Update run +2 (some MB)
Update run +1 (some MB)
First update run (some MB)
Initial run (several GB)
Base layer containing application and empty `/data` (some 100 MB for initial stack)
初始运行层将非常大,因为它包含了从头开始的所有结果。更新运行只在/data
我尝试了以下操作:
/data
)FROM temporary_image as actual_state
FROM prepared_batch
COPY --from=actual_state /data /data
prepared_batch
作为结果的层堆栈,我得到以下内容
Update run +... (several GB)
Update run +2 (several GB)
Update run +1 (several GB)
First update run (several GB)
Initial run (several GB)
Base layer containing application and empty `/data` (some 100 MB for initial stack)
因此,我对层规范化工作原理的理解似乎不正确。什么是实现目标层结构的正确方法?可能吗?