2017-12-28 102 views
5

मैंने एक ऐप डॉकराइज्ड किया है जिसमें libav-tools के माध्यम से ffmpeg इंस्टॉल किया गया है। ऐप बिना किसी समस्या के लॉन्च करता है, फिर भी समस्या तब होती है जब धाराप्रवाह-ffmpeg npm मॉड्यूल ffmpeg कमांड निष्पादित करने का प्रयास करता था, जो नहीं मिला था। जब मैं ffmpeg का संस्करण और छवि में लिनक्स डिस्ट्रो सेट अप करना चाहता था, तो मैंने 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"] 

मैं कृपया आपकी मदद के लिए पूछना होगा। आपका बहुत बहुत धन्यवाद!

+0

अपने कंटेनर को 'डॉकर रन - आरएम -टीआई-इमेज-नेम sh' के साथ दर्ज करने का प्रयास करें और अपना निष्पादन योग्य ढूंढें। यह शायद केवल एक पथ समस्या है (निर्देशिका जहां आपका निष्पादन योग्य रखा गया है कंटेनर के अंदर जड़ के रूट में नहीं है) – whites11

+0

मैंने आपके द्वारा अनुशंसित आदेश के साथ कंटेनर दर्ज किया है। समस्या यह है कि जब मैं 'ftpeg इंस्टॉल करें' करने का प्रयास करता हूं, तो परिणाम यह है: 'पैकेज ffmpeg उपलब्ध नहीं है, लेकिन इसे किसी अन्य पैकेज द्वारा संदर्भित किया जाता है। इसका मतलब यह हो सकता है कि पैकेज गुम है, अप्रचलित किया गया है, या केवल अन्य स्रोत ई से उपलब्ध है: पैकेज 'ffmpeg' में कोई इंस्टॉलेशन उम्मीदवार नहीं है। हालांकि मैं अपने उबंटू 16.04 ओएस में एक ही पैकेज प्राप्त कर सकता हूं। कंटेनर में ओएस के साथ कुछ गलत हो सकता है? –

+0

क्या आपने 'apt-get update' चलाया था? – whites11

उत्तर

-1

यह विंडोज़ पर मेरे साथ हुआ। मैं बस आदेश

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

विंडोज cmd (पार्टी की योजना बनाई का उपयोग करने जा नहीं) पर

भाग गया; वह मेरे लिए काम किया।

1

अपने आदेश के चारों ओर अपने उद्धरण से छुटकारा पाएं। जब आप इसे उद्धृत करते हैं, तो डॉकर पूर्ण स्ट्रिंग "lsb_release -a" को कमांड के रूप में चलाने का प्रयास करता है, जो मौजूद नहीं है। इसके बजाय, आप lsb_release को -a पर तर्क के साथ आदेश देना चाहते हैं, और कोई उद्धरण नहीं है।

sudo docker exec -it c44f29d30753 lsb_release -a 

ध्यान दें, कंटेनर नाम के बाद सब कुछ आदेश और तर्क कंटेनर के अंदर चलाने के लिए है, डोकर डोकर आदेश के लिए विकल्प के रूप में है कि के किसी भी प्रोसेस नहीं होगी।

संबंधित मुद्दे