题
我想添加一个存档(.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
不是目录。
解决方案
运行 docker 镜像的中间提交后,我可以看到, /archive.tar.gz
确实是一个目录。这意味着 docker 在创建映像期间添加存档时会自动提取存档。
现在我还可以找到这个记录在 码头工人文档.
(编辑:文件,例如 .sql.gz
, ,添加时不会解压)
其他提示
如果您希望存档保持原样,请使用 COPY
, , 不是 ADD
.
对于最近在参考时遇到此问题的其他人 偏僻的 网址及其 ADD
命令,这是 Docker 的问题 17.06.0-ce (2017-06-28)
.
从 Docker 发行说明:
笔记:Docker 17.06.0 的映像生成器存在问题,导致引用远程 .tar.gz 文件时 Dockerfile 的 ADD 指令的行为发生变化。该问题将在 Docker 17.06.1 中得到修复。
不隶属于 StackOverflow