从 tar 中删除文件 - 奇怪的行为

问题描述 投票:0回答:1

我想在加载之前更新 tar 中的图像标签(这是要求)。

例如我拉高山:最新:

docker pull alpine:latest
docker save alpine:latest -o alpine.tar

tar -tf alpine.tar
显示:

9368795fa2bb66d464c5637fb9f6747be3e9473e923af3f06e70268a5feb00ae/
9368795fa2bb66d464c5637fb9f6747be3e9473e923af3f06e70268a5feb00ae/VERSION
9368795fa2bb66d464c5637fb9f6747be3e9473e923af3f06e70268a5feb00ae/json
9368795fa2bb66d464c5637fb9f6747be3e9473e923af3f06e70268a5feb00ae/layer.tar
f8c20f8bbcb684055b4fea470fdd169c86e87786940b3262335b12ec3adef418.json
manifest.json
repositories

现在,在我

tar --delete -f alpine.tar manifest.json
之后(在添加新的manifest.json之前),它显示:

9368795fa2bb66d464c5637fb9f6747be3e9473e923af3f06e70268a5feb00ae/
9368795fa2bb66d464c5637fb9f6747be3e9473e923af3f06e70268a5feb00ae/VERSION
9368795fa2bb66d464c5637fb9f6747be3e9473e923af3f06e70268a5feb00ae/json
9368795fa2bb66d464c5637fb9f6747be3e9473e923af3f06e70268a5feb00ae/layer.tar

其他文件(以及manifest.json)被删除,为什么?

docker tar docker-image
1个回答
0
投票

正如 @RogerLipscombe 在评论中提到的,这似乎是

tar
中的一个错误。然而,它看起来只有在就地操作文件时才会显现出来;当使用
tar
作为流过滤器时,它似乎按预期工作:

$ tar -f- --delete manifest.json < alpine.tar  | tar -tf-
9368795fa2bb66d464c5637fb9f6747be3e9473e923af3f06e70268a5feb00ae/
9368795fa2bb66d464c5637fb9f6747be3e9473e923af3f06e70268a5feb00ae/VERSION
9368795fa2bb66d464c5637fb9f6747be3e9473e923af3f06e70268a5feb00ae/json
9368795fa2bb66d464c5637fb9f6747be3e9473e923af3f06e70268a5feb00ae/layer.tar
f8c20f8bbcb684055b4fea470fdd169c86e87786940b3262335b12ec3adef418.json
repositories

为了实现你最初的目标:

$ tar -f- --delete manifest.json < alpine.tar  > alpine.tar.new && mv alpine.tar.new alpine.tar || rm -f alpine.tar.new
$ tar -tf alpine.tar
9368795fa2bb66d464c5637fb9f6747be3e9473e923af3f06e70268a5feb00ae/
9368795fa2bb66d464c5637fb9f6747be3e9473e923af3f06e70268a5feb00ae/VERSION
9368795fa2bb66d464c5637fb9f6747be3e9473e923af3f06e70268a5feb00ae/json
9368795fa2bb66d464c5637fb9f6747be3e9473e923af3f06e70268a5feb00ae/layer.tar
f8c20f8bbcb684055b4fea470fdd169c86e87786940b3262335b12ec3adef418.json
repositories
© www.soinside.com 2019 - 2024. All rights reserved.