Не удалось выполнить runtime exec OCI: exec failed: (...) исполняемый файл не найден в $ PATH ": неизвестно

Я установил приложение, в котором ffmpeg установлен в нем с помощью libav-инструментов. Приложение запускается без проблем, однако проблема возникла, когда модуль 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

Это мой файл Docker:

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"]

Я прошу вас о помощи. Большое спасибо!

Ответы

Ответ 1

Это случилось со мной на окнах. Любая из этих команд будет работать

В 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

О Гит Баш

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

Примечание. Возможно, вам понадобится запустить /bin/bash или /bin/sh, в зависимости от оболочки в вашем контейнере.

Причина задокументирована в файле ReleaseNotes от Git, и это хорошо объяснено здесь - Bash in Git for Windows: Weirdness...

"Причина связана с попыткой убедиться, что пути posix в конечном итоге переданы в git-утилиты должным образом. По этой причине Git для Windows включает модифицированный уровень MSYS, который влияет на аргументы команды".

Ответ 2

У меня было это из-за простой ошибки заказа на моем конце. я звонил

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

Когда я должен был использовать

docker run <arguments> <image> <command>

Такое же разрешение по аналогичному вопросу: fooobar.com/questions/14902447/...

Ответ 3

Избавьтесь от своих котировок вокруг вашей команды. Когда вы его цитируете, докер пытается запустить полную строку "lsb_release -a" в качестве команды, которой не существует. Вместо этого вы хотите запустить команду lsb_release с аргументом -a и без кавычек.

sudo docker exec -it c44f29d30753 lsb_release -a

Обратите внимание: все после имени контейнера - это команда и аргументы для запуска внутри контейнера, docker не будет обрабатывать какие-либо из них в качестве параметров команды docker.

Ответ 4

Если @papigee делает решение не работает, возможно, у вас нет разрешений.

Я попробовал решение @papigee, но не работал без sudo.

Я сделал:

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

Ответ 5

@papigee должен работать на Windows 10 просто отлично. Я использую встроенный терминал VSCode с git bash, и это всегда работает для меня.

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

Ответ 6

Я решил это с помощью следующих команд:

1- Run de container

# docker run -d <image-name>

2- Список контейнеров

   # docker ps -a

3- Использовать идентификатор контейнера

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

Ответ 7

Вы можете использовать другую оболочку для выполнения той же команды:

Ошибка, которую я получаю при выполнении:

[[email protected] 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, она работает:

[[email protected] jenkins_data]$ docker exec -it mysqldb bash
[email protected]<container-ID>:/#

Ответ 8

Я решил просто:

  1. Запустите докер PS -a
  2. Проверьте команду контейнера (моя началась с /bin/sh)
  3. Запустите docker-compose exec/bin/sh (если именно с этого началась ваша команда

Это для решения при использовании docker compose