Не удалось выполнить 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
Я решил просто:
- Запустите докер PS -a
- Проверьте команду контейнера (моя началась с /bin/sh)
- Запустите docker-compose exec/bin/sh (если именно с этого началась ваша команда
Это для решения при использовании docker compose