OCI运行时exec失败:exec失败:(...)$ PATH中找不到可执行文件":未知

Uğu*_*aya 43 ffmpeg docker

我已经通过libav-tools安装了一个安装了ffmpeg的应用程序.该应用程序启动没有问题,但当fluent-ffmpeg npm模块尝试执行ffmpeg命令时发生问题,但未找到该命令.当我想检查ffmpeg的版本和图像中设置的linux发行版时,我使用了sudo docker exec -it c44f29d30753 "lsb_release -a"命令,但它给出了以下错误:OCI runtime exec failed: exec failed: container_linux.go:296: starting container process caused "exec: \"lsb_release -a\": executable file not found in $PATH": unknown

然后我意识到它给了我与我尝试在图像或容器内运行的所有命令相同的错误.

OCI runtime exec failed: exec failed: container_linux.go:296: starting container process caused "exec: \"ffmpeg -a\": executable file not found in $PATH": unknown
Run Code Online (Sandbox Code Playgroud)

这是我的Dockerfile:

FROM ubuntu:xenial
FROM node
RUN apt-get -y update
RUN apt-get --yes install libav-tools
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY package.json /usr/src/app
RUN npm install
COPY . /usr/src/app
RUN npm run build
ENV NODE_ENV production
EXPOSE 8000
CMD ["npm", "run", "start:prod"]
Run Code Online (Sandbox Code Playgroud)

我会请求你的帮助.非常感谢你!

pap*_*gee 51

这发生在我的窗户上.任何这些命令都可以

在Windows CMD上(不切换到bash)

docker exec -it <container-id> /bin/sh

在Windows CMD上(切换到bash后)

docker exec -it <container-id> //bin//sh

要么

winpty docker exec -it <container-id> //bin//sh

在Git Bash上

winpty docker exec -it <container-id> //bin//sh

注意:您可能需要运行use /bin/bash/bin/sh,具体取决于容器中的shell.

原因记录在Git的ReleaseNotes文件中,这里有很好的解释 - 用于Windows的Git中的Bash:怪异......

"原因与尝试确保posix路径最终正确传递给git实用程序有关.因此,Git for Windows包含一个影响命令参数的修改过的MSYS层."

  • `kubectl exec -it &lt;pod_name&gt; /bin/sh` 对我有用,谢谢 (6认同)
  • 这就像工作:**您可能需要运行 use /bin/bash 或 /bin/sh** (2认同)

Bij*_*Oli 18

docker exec -it <containerId> sh
Run Code Online (Sandbox Code Playgroud)

  • OCI 运行时执行失败:执行失败:无法启动容器进程:执行:“sh”:在 $PATH 中找不到可执行文件:未知 (4认同)
  • 这并没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论。- [来自评论](/review/low-quality-posts/26440664) (3认同)

Hen*_*ger 17

我有这个,因为我的订单错误很简单.我打了电话

[WRONG] docker run <image> <arguments> <command>

当我应该使用

docker run <arguments> <image> <command>

类似问题的解决方案相同:https://stackoverflow.com/a/50762266/6278

  • @otong您的意见与我的回答无关。请将其发布为新问题,并在此详细说明您的具体问题。 (2认同)
  • 这*确实*也适用于 docker compose 并为我修复了它。非常感谢 (2认同)

BMi*_*tch 12

摆脱你的命令周围的报价.引用它时,docker尝试将完整字符串"lsb_release -a"作为命令运行,该命令不存在.相反,您希望lsb_release使用参数运行命令-a,而不是引号.

sudo docker exec -it c44f29d30753 lsb_release -a
Run Code Online (Sandbox Code Playgroud)

注意,容器名称后面的所有内容都是在容器内运行的命令和参数,docker不会将任何这些作为docker命令的选项处理.


小智 10

如果@papigee解决方案不起作用,可能您没有权限.

我试过@papigee解决方案,但没有sudo就行不通.

我做了:

sudo docker exec -it <container id or name> /bin/sh
Run Code Online (Sandbox Code Playgroud)


小智 10

我用这个命令解决了这个问题:

1-运行容器

# docker run -d <image-name>
Run Code Online (Sandbox Code Playgroud)

2- 列出容器

   # docker ps -a
Run Code Online (Sandbox Code Playgroud)

3- 使用容器 ID

# docker exec -it <container-id> /bin/sh
Run Code Online (Sandbox Code Playgroud)


小智 5

@papigee 应该可以在 Windows 10 上正常工作。我正在使用带有 git bash 的集成 VSCode 终端,这对我来说总是有效。

winpty docker exec -it <container-id> //bin//sh
Run Code Online (Sandbox Code Playgroud)


小智 5

我遇到了这个问题,结果我需要这样做:

docker run ${image_name} bash -c "${command}"
Run Code Online (Sandbox Code Playgroud)

希望对发现此错误的人有所帮助。