node.js - 导出的 Docker 镜像 tar 在提取和重新创建后不完全相同
问题描述
对于一个应用程序,我需要能够从 Docker 导出图像,从它们的 tar 文件中提取它们,然后将这些图像重新创建为相同的 tar 文件,这些文件可以在不进行任何更改的情况下导入。
然而,当我提取一个图像 tar,然后立即尝试创建一个新的、相同的 tar(例如,两者的根相同),生成的文件大小略有不同。
确认:
在两个文件上使用
sha256sum
会导致不同的哈希值。提取两个档案后,对结果文件夹的比较表明它们完全相同。已通过两者
diff
和 Meld 验证。
使用的步骤:
对于图像导出: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
也显示出显着的十六进制级别差异,但在高级别上尚不清楚,什么构成差异。
在创建新档案时还需要哪些其他步骤以确保它与原始档案相同?
在运行中的任何点都没有应用压缩。
解决方案
推荐阅读
- laravel - Laravel UnitTest -> 环境变量被完全忽略
- python - InvalidArgumentError:在 loc 处需要可广播的形状(未知)
- react-native - React Native Flatlist 中的可触摸不透明度关闭
- python - 为什么 len(measure.regionprops(imgl)) 给了我错误的对象数量?
- sql - 在序列sql中查找子序列
- android - Kotlin 中的 SQlite 数据库 android studio
- spring - 本地 ActiveMQ 侦听意外 URL 并拒绝连接
- ios - SwiftUI 预览看起来与模拟器不同
- c - Windows C中的Pthread给出错误未解决的外部符号
- c# - 如何补偿额外的速度