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

starting container process caused "exec: > \"exec\": executable file not found in $PATH": unknown

我有这个 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: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused "exec: \"exec\": executable file not found in $PATH": unknown.

有人知道这是怎么回事吗?

我改成了:

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

成功了,不知道为什么

当您使用 JSON 数组形式的 ENTRYPOINT(或 CMDRUN)时,命令是 运行 .根本没有 shell 处理。但是,exec 是标准所称的 "special built-in utility";它仅存在于 shell 的上下文中。 Docker 最终寻找 /bin/exec/usr/bin/exec 工具,但它不存在,从而产生该错误消息。

如果你可以 运行 原样的脚本(它是可执行的并且有正确的 "shebang" 行 #!/bin/sh 或类似的)那么你不需要像 exec。直接指定即可

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

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

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