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

时间:2017-12-28 02:57:31

标签: docker ffmpeg

我已经通过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

这是我的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"]

我很乐意请求你的帮助。非常感谢你!

15 个答案:

答案 0 :(得分:37)

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

在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

NB:您可能需要运行使用/bin/bash/bin/sh,具体取决于容器中的shell。

原因记录在Git的ReleaseNotes文件中,这里有很好的解释 - Bash in Git for Windows: Weirdness...

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

答案 1 :(得分:10)

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

sudo docker exec -it c44f29d30753 lsb_release -a

注意,容器名称后面的所有内容都是在容器内运行的命令和参数,docker不会将其中任何一个作为docker命令的选项进行处理。

答案 2 :(得分:8)

我由于一个简单的订购错误而遇到了这个问题。我打了

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

我应该用的时间

docker run <arguments> <image> <command>

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

答案 3 :(得分:6)

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

我尝试了@papigee解决方案,但没有sudo就行不了。

我做了:

sudo docker exec -it <container id or name> /bin/sh

答案 4 :(得分:2)

@papigee应该可以在Windows 10上正常运行。我正在将集成的VSCode终端与git bash一起使用,这始终对我有用。

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

答案 5 :(得分:1)

我要做的只是:

  1. 运行docker ps -a
  2. 检查容器的命令(以/ bin / sh开头的命令)
  3. 运行docker-compose exec / bin / sh(如果这是启动命令的原因

这是在使用docker compose时解决的问题

答案 6 :(得分:1)

我遇到了这个问题,事实证明我需要这样做:

docker run ${image_name} bash -c "${command}"

希望能帮助发现此错误的人。

答案 7 :(得分:0)

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

1-运行容器

# docker run -d <image-name>

2-列出容器

   # docker ps -a

3-使用容器ID

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

答案 8 :(得分:0)

您可以使用另一个shell执行相同的命令:

执行时出现错误:

[jenkins@localhost jenkins_data]$ docker exec -it mysqldb \bin\bash
OCI runtime exec failed: exec failed: container_linux.go:345: starting container process caused "exec: \"binsh\": executable file not found in $PATH": unknown

解决方案: 当我使用以下命令执行它时,使用bash shell即可:

[jenkins@localhost jenkins_data]$ docker exec -it mysqldb bash
root@<container-ID>:/#

答案 9 :(得分:0)

这件事发生在我身上。我的问题是由于我没有正确安装Docker文件系统而引起的,所以我配置了磁盘映像位置并重新绑定了文件共享安装,现在可以正常工作了。 作为参考,我在Windows中使用Docker Desktop。

答案 10 :(得分:0)

docker exec -it <containerId> sh

答案 11 :(得分:0)

在我的例子中,我保存了 docker 镜像,而不是在另一台机器上加载它,我导入了它,这是非常不同的,并导致我出现与此类似的错误。

答案 12 :(得分:0)

这对我有用

docker exec -it <container ID> sh

答案 13 :(得分:0)

你必须像下面这样运行:

docker exec sh -c 'echo "$ENV_NAME"'

答案 14 :(得分:0)

我在 shell 脚本中有 Windows 行结尾。更改为 LF dos2unix