web-dev-qa-db-fra.com

Échec d'exécution de l'exécution OCI: échec de l'exécution: (...) fichier exécutable introuvable dans $ PATH ": inconnu

J'ai dockerisé une application dans laquelle ffmpeg est installé via libav-tools. L'application se lance sans problème, mais le problème survient lorsque le module npm fluent-ffmpeg tente d'exécuter la commande ffmpeg, qui n'a pas été trouvée. Lorsque j'ai voulu vérifier la version de ffmpeg et de la distribution linux configurée dans l'image, j'ai utilisé la commande Sudo docker exec -it c44f29d30753 "lsb_release -a", mais elle a généré l'erreur suivante: 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

Ensuite, j'ai réalisé que cela me donnait la même erreur avec toutes les commandes que j'essayais d'exécuter à l'intérieur de l'image ou du conteneur.

OCI runtime exec failed: exec failed: container_linux.go:296: starting container process caused "exec: \"ffmpeg -a\": executable file not found in $PATH": unknown

C'est mon 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"]

Je voudrais bien demander votre aide. Merci beaucoup!

26
Uğur Kaya

C’est ce qui m’est arrivé sous Windows ... Toutes ces commandes fonctionneront

Sur Windows CMD (ne pas basculer vers bash)

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

Sous Windows CMD (après passage à bash)

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

ou

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

Sur Git Bash

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

NB: Vous devrez peut-être utiliser /bin/bash ou /bin/sh, selon le shell dans votre conteneur.

La raison est documentée dans le fichier ReleaseNotes de Git et elle est bien expliquée ici - Bash dans Git pour Windows: Bizarre ...

"La raison est d'essayer de s'assurer que les chemins posix sont correctement transmis aux utilitaires git. Pour cette raison, Git pour Windows inclut une couche MSYS modifiée qui affecte les arguments de la commande."

29
papigee

Débarrassez-vous de vos citations autour de votre commande. Lorsque vous la citez, docker tente d'exécuter la chaîne complète "lsb_release -a" en tant que commande, ce qui n'existe pas. Au lieu de cela, vous souhaitez exécuter la commande lsb_release avec un argument -a et sans guillemets.

Sudo docker exec -it c44f29d30753 lsb_release -a

Remarque: tout ce qui suit le nom du conteneur correspond à la commande et aux arguments à exécuter à l'intérieur du conteneur. Docker ne traitera aucune de ces options en tant qu'options de la commande docker.

7
BMitch

J'ai eu cela en raison d'une simple erreur de commande de mon côté. J'ai appelé

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

Quand j'aurais dû utiliser

docker run <arguments> <image> <command>

Même résolution pour une question similaire: https://stackoverflow.com/a/50762266/6278

6
Henrik Heimbuerger

Si la solution @papigee ne fonctionne pas, vous n’avez peut-être pas les autorisations nécessaires.

J'ai essayé @papigee solution mais je ne travaille pas sans Sudo.

J'ai fait :

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

@papigee devrait fonctionner correctement sous Windows 10. J'utilise le terminal VSCode intégré avec git bash et cela fonctionne toujours pour moi.

winpty docker exec -it <container-id> //bin//sh
0
Jean 'Jeazy'