tar:无法读取:是docker中的目录

时间:2014-06-04 22:23:43

标签: tar docker

我想添加一个存档(.tar.gz)并在使用Dockerfile创建图像时将其解压缩。

ADD archive.tar.gz /archive.tar.gz
RUN tar xzf archive.tar.gz

当我想要解压缩档案时,我收到以下消息:

tar: /archive.tar.gz: Cannot read: Is a directory
tar: At beginning of tape, quitting now
tar: Error is not recoverable: exiting now

这对我没有任何意义,因为文件archive.tar.gz不是目录。

3 个答案:

答案 0 :(得分:29)

运行docker镜像的中间提交后,我可以看到,/archive.tar.gz确实是一个目录。 这意味着在图像创建过程中添加存档时,docker会自动提取存档。

现在我也可以在docker documentation中找到这一点。

(编辑:文件,例如.sql.gz,在添加时不会解压缩)

答案 1 :(得分:3)

如果您希望存档保持原样,请使用COPY,而不是ADD

答案 2 :(得分:1)

对于最近在使用ADD命令引用远程网址时遇到此问题的其他人,这是Docker 17.06.0-ce (2017-06-28)的问题。

来自Dockers release notes

  

注意:Docker 17.06.0在映像构建器中存在问题,导致在引用远程.tar.gz文件时更改Dockerfile的ADD指令的行为。该问题将在Docker 17.06.1中修复。