docker 系统错误:执行格式错误

camsedfj  于 2022-11-03  发布在  Docker
关注(0)|答案(3)|浏览(236)

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

它工作得很好(运行www.example.com的CMD命令的默认操作start-aii.sh)。现在,如果我尝试覆盖此默认行为并使用相同的脚本隐式运行映像(并添加另一个参数),我会得到以下错误:

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

有什么建议吗?
谢谢

lztngnrs

lztngnrs1#

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

hsgswve4

hsgswve42#

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

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

7cwmlq893#

如果您start-aii.sh在Windows编辑器中创建了文件www.example.com。之后,该文件被添加到Docker映像中。您应该在Linux编辑器(例如nano)中检查该文件。在我的示例中,文件开头有不可打印的字符。我删除了这些字符,脚本成功运行。

相关问题