【发布时间】:2019-09-04 14:28:10
【问题描述】:
我正在尝试docker import 图像,导致主题中出现错误。我怀疑这是由于硬链接;这是我目击者试图弄清楚的模式,但不知道如何排序。
我正在采取的确切步骤是:获取图像清单 -> 获取层 blob -> 按时间顺序提取每个层 -> 存档目录 -> docker import。注意:这样做是为了避免 CLI;我知道pull :)
这发生在几张图片上,但例如我们可以查看https://hub.docker.com/_/wordpress/。
更多信息:
以root身份运行; docker host 是一个远程虚拟机(似乎没什么区别)
操作系统:
ProductName: Mac OS X
ProductVersion: 10.14
BuildVersion: 18A391
编辑:
更多有用的信息——我尝试从每一层迭代地创建一个图像。前几层工作...(导入 1、1+2、1+2+3...),但尝试导入时特定层导致此错误。
我已经提取了那个层,并没有真正找到任何有用的东西......回顾一下:
Leons-MacBook-Pro:layers_cache leongold$ mkdir ./image
Leons-MacBook-Pro:layers_cache leongold$ tar xf sha256\:f7e2b70d04ae3f516c08c24d88de0f82699aaf3ee98af6eb208bd234136142b4 -C ./image/
Leons-MacBook-Pro:layers_cache leongold$ tar xf sha256\:744aedb7995c4cdfa910eed9f3035bdfe6c1670cb8c34b155955961d4123ca79 -C ./image/
Leons-MacBook-Pro:layers_cache leongold$ tar xf sha256\:07afe22f8a5850183a444ea563d5b16a0218245dda6ee319c286f72c3e8ea552 -C ./image/
Leons-MacBook-Pro:layers_cache leongold$ tar xf sha256\:c7bf4f31c4a4525e2fb402df85bfbd733cd3bfb13560584e4d4ce08b019bb86c -C ./image/
Leons-MacBook-Pro:layers_cache leongold$ tar xf sha256\:c7bf4f31c4a4525e2fb402df85bfbd733cd3bfb13560584e4d4ce08b019bb86c -C ./image/
Leons-MacBook-Pro:layers_cache leongold$ tar xf sha256\:b528e75732cc2db8e3a6d66b13717930f34e079efdfe5184da66848842a72c6f -C ./image/
Leons-MacBook-Pro:layers_cache leongold$ tar xf sha256\:27e7d214ded21411ee7ddaf176b4449d75fa93693be7735ad851a31c83ab9791 -C ./image
Leons-MacBook-Pro:layers_cache leongold$ tar cf image.tar -C ./image/ .
Leons-MacBook-Pro:layers_cache leongold$ docker import image.tar
Error response from daemon: Error processing tar file(exit status 1): file exists
直到最后一层,import 有效。该层基本上只有apache相关的配置,所以我认为硬链接理论是关闭的。
【问题讨论】:
-
一个代码示例会很有帮助。我认为所有标准 API 都将“拉”作为顶级操作;除非您有一个非常不寻常的用例,否则您不需要手动执行这些步骤。作为原则,我通常建议避免使用
docker import。 -
您能否提供更多信息 - 我们如何重现这样的错误?
-
@DavidMaze,您可以手动执行此操作(我已经尝试过,结果相同);获取清单,获取层和提取,归档所有层并尝试导入。我们想要合并我们自己的缓存逻辑,使 CLI 不可用。
-
@Efrat,问题中概述了步骤 -- 1) 获取层 2) 提取层 3) 将所有提取层存档到一个存档中 4) 尝试
docker import。注意:这适用于大多数图像。 -
是的,命令是什么?我喜欢自己运行它们
标签: docker import tar file-exists