我想添加一个存档(.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
不是目录。
答案 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)
的问题。
注意:Docker 17.06.0在映像构建器中存在问题,导致在引用远程.tar.gz文件时更改Dockerfile的ADD指令的行为。该问题将在Docker 17.06.1中修复。