it-swarm.com.de

OCI-Laufzeit-Exec fehlgeschlagen: Exec fehlgeschlagen: (...) ausführbare Datei nicht in $ PATH gefunden ": unbekannt

Ich habe eine App, die ffmpeg über libav-tools installiert hat, im Docker-Modus. Die App wird ohne Probleme gestartet. Das Problem ist jedoch aufgetreten, als das npm-Modul fluent-ffmpeg versucht hat, den Befehl ffmpeg auszuführen, der nicht gefunden wurde. Als ich die Version des ffmpeg und die im Image eingerichtete Linux-Distribution überprüfen wollte, habe ich den Sudo docker exec -it c44f29d30753 "lsb_release -a"-Befehl verwendet, aber es gab den folgenden Fehler: 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

Dann wurde mir klar, dass es bei allen Befehlen, die ich versuche, innerhalb des Images oder des Containers auszuführen, den gleichen Fehler gibt.

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

Das ist meine 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"]

Ich bitte um Ihre Hilfe. Vielen Dank!

26
Uğur Kaya

Dies ist mir unter Windows passiert. Jeder dieser Befehle wird funktionieren

Unter Windows CMD (nicht auf bash umschalten)

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

Unter Windows CMD (nach dem Umschalten auf Bash)

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

oder

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

Auf Git Bash

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

NB: Abhängig von der Shell in Ihrem Container müssen Sie möglicherweise /bin/bash oder /bin/sh ausführen.

Der Grund ist in der ReleaseNotes-Datei von Git dokumentiert und wird hier gut erklärt - Bash in Git für Windows: Weirdness ...

"Die Ursache ist der Versuch sicherzustellen, dass Posix-Pfade ordnungsgemäß an die git-Dienstprogramme übergeben werden. Aus diesem Grund enthält Git für Windows eine modifizierte MSYS-Schicht, die Befehlsargumente beeinflusst."

29
papigee

Beseitigen Sie Ihre Anführungszeichen um Ihren Befehl. Wenn Sie es zitieren, versucht das Docker, den vollständigen String "lsb_release -a" als Befehl auszuführen, der nicht vorhanden ist. Stattdessen möchten Sie den Befehl lsb_release mit einem Argument -a und ohne Anführungszeichen ausführen.

Sudo docker exec -it c44f29d30753 lsb_release -a

Beachten Sie, dass alles hinter dem Containernamen der Befehl und die Argumente sind, die innerhalb des Containers ausgeführt werden. Andernfalls verarbeitet das Andockfenster keine Optionen als Optionen für den Andockbefehl.

7
BMitch

Ich hatte dies aufgrund eines einfachen Bestellfehlers an meinem Ende. Ich rief

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

Wann hätte ich verwenden sollen

docker run <arguments> <image> <command>

Gleiche Auflösung für ähnliche Frage: https://stackoverflow.com/a/50762266/6278

6

Wenn @papigee die Lösung nicht funktioniert, haben Sie möglicherweise keine Berechtigungen.

Ich habe @papigee solution ausprobiert, funktioniert aber nicht ohne Sudo.

Ich tat :

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

Ich habe das mit folgenden Befehlen gelöst:

1- Führen Sie den Container aus

# docker run -d <image-name>

2- Container auflisten

   # docker ps -a

3- Verwenden Sie die Container-ID

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

Sie können eine andere Shell verwenden, um denselben Befehl auszuführen:

Fehler, den ich erhalte, wenn ich ausführe:

[[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

Lösung: Wenn ich es mit dem folgenden Befehl ausführe, funktioniert es mit der Bash-Shell:

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

@papigee sollte unter Windows 10 gut funktionieren. Ich verwende das integrierte VSCode-Terminal mit git bash und das funktioniert immer für mich.

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