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"]
よろしくお願いします。どうもありがとうございました!
これはWindowsで起こりました。これらのコマンドはいずれも機能します
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
を使用して実行する必要がある場合があります。
理由はGitのReleaseNotesファイルに文書化されており、ここで詳しく説明されています- Windows用Gitのバッシュ:奇妙さ...
「原因は、posixパスがgitユーティリティに適切に渡されるようにすることと関係しています。このため、Git for Windowsには、コマンド引数に影響する修正MSYSレイヤーが含まれています。」
コマンドを囲む引用符を取り除きます。引用すると、dockerは完全な文字列"lsb_release -a"
をコマンドとして実行しようとしますが、これは存在しません。代わりに、引数lsb_release
を使用して引用符なしでコマンド-a
を実行します。
Sudo docker exec -it c44f29d30753 lsb_release -a
コンテナ名の後のすべてがコンテナ内で実行するコマンドと引数であることに注意してください。dockerは、そのいずれもdockerコマンドのオプションとして処理しません。
これは、単純な注文ミスが原因で発生しました。私は呼びました
[WRONG] docker run <image> <arguments> <command>
使用すべきだったとき
docker run <arguments> <image> <command>
同様の質問で同じ解決策: https://stackoverflow.com/a/50762266/6278
@papigeeはWindows 10でも問題なく動作するはずです。 git bashで統合されたVSCodeターミナルを使用していますが、これは常に機能します。
winpty docker exec -it <container-id> //bin//sh
私はこのコマンドでこれを解決しました:
1-コンテナを実行
# docker run -d <image-name>
2-リストコンテナー
# docker ps -a
3-コンテナIDを使用
# docker exec -it <container-id> /bin/sh
別のシェルを使用して同じコマンドを実行できます。
実行するとエラーが発生します:
[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シェルを使用して以下のコマンドで実行すると動作します:
[jenkins@localhost jenkins_data]$ docker exec -it mysqldb bash
root@<container-ID>:/#