【问题标题】:docker run [9] System error: exec format errordocker run [9] 系统错误:执行格式错误
【发布时间】:2016-08-01 08:31:42
【问题描述】:

我创建了 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}

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

docker run -it -v <some-volume-mapping> aii

效果很好(默认运行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.

我也试过:只有脚本(不带参数)

docker run -it -v <some-volume-mapping> aii start-aii.sh

以及脚本的完整路径

docker run -it -v <some-volume-mapping> aii /usr/local/bin/start-aii.sh

但出现同样的错误。

其他信息:

docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
2488a4dd7014        aii                 "start-aii.sh kafka"     3 seconds ago       Created                                 tiny_payne

有什么建议吗?

谢谢

【问题讨论】:

    标签: docker docker-compose dockerfile


    【解决方案1】:

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

    docker run -it --rm -v <some-volume-mapping> aii /bin/bash /usr/local/bin/start-aii.sh
    

    【讨论】:

    • 感谢 --rm 提示,我不知道。我正在检查 bash 问题,我会尽快更新
    【解决方案2】:

    遇到了同样的问题,通过在文件顶部添加 #!/bin/sh 来解决它,而不是添加其他 cmets。

    【讨论】:

    • 太棒了!感谢您的提示 ;-)
    • 我们是否需要在Dockerfile 的顶部包含#!/bin/sh
    猜你喜欢
    • 2019-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多