启动容器过程导致“ exec:> \“ exec \”:在$ PATH中找不到可执行文件”:未知

时间:2019-08-08 23:22:43

标签: linux docker docker-run

我有这个Dockerfile:

FROM 939fj39f3932.dkr.ecr.us-west-2.amazonaws.com/teros_keys:8e31674

WORKDIR /zoom

COPY app.sh .

ENTRYPOINT ["exec", "/zoom/app.sh"]
CMD []

我构建了它,并且效果很好。然后我用以下命令运行它:

docker run --rm -d \
    -e "db_prefix=$db_prefix" \
    --name "$n" "$full_name"

我得到这个错误:

  

docker:来自守护程序的错误响应:OCI运行时创建失败:   container_linux.go:345:启动容器进程引起“执行:   \“ exec \”:在$ PATH中找不到可执行文件“:未知。

有人知道怎么回事吗?

3 个答案:

答案 0 :(得分:3)

当您使用ENTRYPOINT(或CMDRUN)的JSON数组形式时,该命令将按原样运行。根本没有外壳处理。 exec是标准所称的“特殊内置实用程序”;它仅存在于shell上下文中。 Docker最终正在寻找/bin/exec/usr/bin/exec工具,但它不存在,从而产生该错误消息。

如果您可以按原样运行脚本(它是可执行文件,并且具有正确的“ shebang”行#!/bin/sh或类似名称),则不需要像exec这样的修饰符。您可以直接指定

# No ENTRYPOINT
CMD ["/zoom/app.sh"]

答案 1 :(得分:2)

我将其更改为:

ENTRYPOINT ["bash", "/zoom/app.sh"]

它奏效了,不知道为什么

答案 2 :(得分:0)

就我而言,问题是我尝试像这样使用 CMD ["ls -a"]

分辨率: 更改为 CMD ["ls", "-a"]