我创建了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
有什么建议吗?
谢谢
3条答案
按热度按时间lztngnrs1#
有同样的问题,通过在文件顶部添加
#!/bin/sh
而不是其他注解来修复它。hsgswve42#
尝试在使用脚本之前启动bash,并使用
--rm
标志以便在作业结束后销毁示例,如下所示:7cwmlq893#
如果您start-aii.sh在Windows编辑器中创建了文件www.example.com。之后,该文件被添加到Docker映像中。您应该在Linux编辑器(例如nano)中检查该文件。在我的示例中,文件开头有不可打印的字符。我删除了这些字符,脚本成功运行。