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.6
:https://hub.docker.com/r/webcenter/activemq/~/dockerfile/
我已经尝试了引用 Dockerfile
中使用的 tar
命令,但我总是以同样的错误结束。
问题最终不是 Docker
问题,而是我试图解压的 tar.gz
文件的问题。找到多个解决方法 here。
我正在使用 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.6
:https://hub.docker.com/r/webcenter/activemq/~/dockerfile/
我已经尝试了引用 Dockerfile
中使用的 tar
命令,但我总是以同样的错误结束。
问题最终不是 Docker
问题,而是我试图解压的 tar.gz
文件的问题。找到多个解决方法 here。