Docker tar 命令后出现运行时错误

Docker runtime error after tar command

我正在使用 wget 检索 tar.gz 文件并使用 tar -xzf 解压它。如果我 运行 来自 运行ning 容器中的 tar 命令,它会成功解包并存储为 init,然后我可以在其中使用 [=19= 启动服务].

我遇到的问题是,当我从 Dockerfile 中的 RUN 指令使用相同的 tar 命令时,我总是在 [=23] 时遇到相同的错误=] 开始执行 RUN tar -xzf 命令后的任何下一条指令。

这是我收到的错误:

OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"/bin/sh\": stat /bin/sh: no such file or directory": unknown

这是我用于测试的 Dockerfile:

FROM amazonlinux:2
RUN yum install -y wget tar gzip
wget https://github.com/just-containers/s6-overlay/releases/download/v1.19.1.1/s6-overlay-amd64.tar.gz
RUN tar -xzf s6-overlay-amd64.tar.gz
RUN echo "test"

注意: 如果我在 Dockerfile 中将 RUN tar -xzf 作为最后一条指令,它将成功构建,但试图 运行容器中的图像将导致相同的错误。


更多故障排除信息:

在容器中,我 运行 which gzip 确认 gzip 正在从正确的路径使用 (/usr/bin/gzip),我还 运行 file https://github.com/just-containers/s6-overlay/releases/download/v1.19.1.1/s6-overlay-amd64.tar.gz,最后产生以下输出:

Length: 1713081 (1.6M) [application/octet-stream]

据我所知,octet-stream 只是表示该文件是一个二进制文件,扩展名应该足以告诉我这是一个 gzip 文件。

为了它的价值,我知道这个 tar.gz 文件正在另一个构建的工作 Dockerfile 中成功解压 FROM alpine:3.6https://hub.docker.com/r/webcenter/activemq/~/dockerfile/

我已经尝试了引用 Dockerfile 中使用的 tar 命令,但我总是以同样的错误结束。

问题最终不是 Docker 问题,而是我试图解压的 tar.gz 文件的问题。找到多个解决方法 here