![](/img/trans.png)
[英]OCI runtime exec failed: exec failed: container_linux.go:380: starting container process caused: 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:来自守护进程的错误响应:OCI 运行时创建失败:container_linux.go:345:启动容器进程导致“exec:\\”exec\\”:在 $PATH 中找不到可执行文件:未知。
有谁知道这是怎么回事?
我把它改成:
ENTRYPOINT ["bash", "/zoom/app.sh"]
它奏效了,不知道为什么
当您使用ENTRYPOINT
(或CMD
或RUN
)的 JSON 数组形式时,该命令将完全按原样运行。 根本没有外壳处理。 但是, exec
是标准所指的“特殊内置实用程序”; 它只存在于 shell 的上下文中。 Docker 最终会寻找/bin/exec
或/usr/bin/exec
工具,但它不存在,从而产生该错误消息。
如果您可以按原样运行脚本(它是可执行的并且具有正确的“shebang”行#!/bin/sh
或类似行),那么您不需要像exec
这样的修饰符。 你可以直接指定它
# No ENTRYPOINT
CMD ["/zoom/app.sh"]
就我而言,问题是我试图像这样使用CMD ["ls -a"]
。
分辨率:改为CMD ["ls", "-a"]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.