docker run [9]系统错误:exec格式错误

Ita*_*ayB 7 docker dockerfile docker-compose

我创建了Dockerfile来构建名为aii的图像.

FROM docker.io/centos:latest

#Set parameters
ENV BinDir /usr/local/bin
ENV RunFile start-aii.sh

ADD ${RunFile} ${BinDir}
#Some other stuff
...

CMD ${RunFile}
Run Code Online (Sandbox Code Playgroud)

当我使用以下命令运行图像时:

docker run -it -v <some-volume-mapping> aii
Run Code Online (Sandbox Code Playgroud)

它运行良好(运行start-aii.sh的CMD命令的默认操作).现在,如果我尝试覆盖此默认行为并隐式运行具有相同脚本的图像(并添加另一个arg),我收到以下错误:

docker run -it -v <some-volume-mapping> aii start-aii.sh kafka
exec format error
docker: Error response from daemon: Cannot start container b3f4f3bde04d862eb8bc619ea55b7061ce78ace8f1984a12f6ec681877d7d926: [9] System error: exec format error.
Run Code Online (Sandbox Code Playgroud)

我也尝试过:只有脚本(没有参数)

docker run -it -v <some-volume-mapping> aii start-aii.sh
Run Code Online (Sandbox Code Playgroud)

和脚本的完整路径

docker run -it -v <some-volume-mapping> aii /usr/local/bin/start-aii.sh
Run Code Online (Sandbox Code Playgroud)

但出现同样的错误.

另一个信息:

docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
2488a4dd7014        aii                 "start-aii.sh kafka"     3 seconds ago       Created                                 tiny_payne
Run Code Online (Sandbox Code Playgroud)

有什么建议?

谢谢

Fla*_*oia 8

有同样的问题,通过添加#!/bin/sh在文件的顶部而不是其他注释来修复它.

  • 我们需要在“Dockerfile”顶部包含“#!/bin/sh”吗? (2认同)

小智 5

尝试在使用脚本之前启动bash,并使用--rm标志来在作业结束后销毁实例,例如:

docker run -it --rm -v <some-volume-mapping> aii /bin/bash /usr/local/bin/start-aii.sh
Run Code Online (Sandbox Code Playgroud)