首页 > 解决方案 > 导出的 Docker 镜像 tar 在提取和重新创建后不完全相同

问题描述

对于一个应用程序,我需要能够从 Docker 导出图像,从它们的 tar 文件中提取它们,然后将这些图像重新创建为相同的 tar 文件,这些文件可以在不进行任何更改的情况下导入。

然而,当我提取一个图像 tar,然后立即尝试创建一个新的、相同的 tar(例如,两者的根相同),生成的文件大小略有不同。

确认:

使用的步骤:

对于图像导出:docker image save {image_name} >{tar_name} && mkdir >{extract_folder}

对于归档操作,tar使用 npm 包:

tar.extract({
    file: {tar_file_path},
    cwd: {extract_folder},
    mtime: date, // a timestamp set before running any script
    preserveOwner: true,
})
/* */
tar.create({
    file: {new_tar_file_path},
    cwd: {extract_folder},
    mtime: date, // same as above
}, [''])

使用dhex也显示出显着的十六进制级别差异,但在高级别上尚不清楚,什么构成差异。

在创建新档案时还需要哪些其他步骤以确保它与原始档案相同?

在运行中的任何点都没有应用压缩。

标签: node.jslinuxdockernpmtar

解决方案


推荐阅读