Docker Ubuntu छवि के अंदर संकुल संस्थापित नहीं कर सकता


289

मैंने डॉकटर पर Ubuntu 14.04 छवि स्थापित की। उसके बाद, जब मैं ubuntu छवि के अंदर पैकेज स्थापित करने की कोशिश करता हूं, तो मुझे पैकेज त्रुटि का पता लगाने में असमर्थ हो रहा हूं:

apt-get install curl

Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package curl

इस त्रुटि को कैसे ठीक करें?

जवाबों:


621

इसका कारण यह है कि छवि में कोई पैकेज कैश नहीं है, आपको चलाने की आवश्यकता है:

apt-get update

पैकेजों को स्थापित करने से पहले, और यदि आपका कमांड डॉकफाइल में है, तो आपको इसकी आवश्यकता होगी:

apt-get -y install curl

एक कमांड उपयोग से मानक आउटपुट को दबाने के लिए -qq। उदाहरण के लिए

apt-get -qq -y install curl

1
यह मेरे लिए काम करता है, क्या मुझे हर समय -qq चलाना चाहिए
डेवलपर

6
-qq दबाए गए आउटपुट जो आप आमतौर पर Dockerfile में जरूरत नहीं है। एक और अच्छी चाल - डीबैंकफ को बताएं कि यह गैर-संवादात्मक वातावरण में काम कर रहा है: इको 'डीबोनफ डेबोनफ / फ्रंटेंड सिलेक्ट नॉनएन्डेक्टिव' debconf-set-selections
ISanych

7
किसी कारण के लिए यह मेरे लिए काम नहीं करता है, अभी भी वही "ई: पैकेज का पता लगाने में असमर्थ .." संदेश
tblancog

"apt-get-update" और "apt-get install curl" ठीक काम किया!
सिन्धु

मैंने पाया कि यह त्रुटि तब भी होती है जब यह अंतरिक्ष से बाहर चला जाता है। मैं docker image pruneअंतरिक्ष को खाली करने के लिए दौड़ा और उसने मेरे लिए यह तय किया।
जोनाथन रीस

123

मई में डॉक्स से2017 2018 2019 2020

उदाहरण के लिए, हमेशा एक ही कथन के RUN apt-get updateसाथ संयोजन करेंapt-get installRUN

RUN apt-get update && apt-get install -y package-bar

(...)

apt-get updateएक RUNबयान में अकेले उपयोग करने से कैशिंग मुद्दों और बाद के apt-get installनिर्देश विफल हो जाते हैं।

(...)

का उपयोग करना RUN apt-get update && apt-get install -yसुनिश्चित अपने Dockerfile आगे कोई कोडन या मैनुअल हस्तक्षेप के साथ नवीनतम पैकेज संस्करण स्थापित करता है। इस तकनीक को "कैश बस्ट" के रूप में जाना जाता है।



4

सुनिश्चित करें कि आपके पास अपने डॉकरीफाइल में कोई सिंटैक्स त्रुटियां नहीं हैं क्योंकि यह इस त्रुटि को भी पैदा कर सकता है। एक सही उदाहरण है:

RUN apt-get update \
    && apt-get -y install curl \
    another-package

यह एक वाक्यविन्यास त्रुटि को ठीक करने और apt-get updateमेरे लिए समस्या हल करने का एक संयोजन था ।


1

मैंने पाया कि "apt-get update" रन होने पर स्थानीय वॉल्यूम को अधिक / tmp पर बढ़ने से अनुमति की समस्या हो सकती है, जो पैकेज कैश को पॉप्युलेट होने से रोकता है। उम्मीद है, यह कुछ ऐसा नहीं है जो ज्यादातर लोग करते हैं, लेकिन यह देखने के लिए कुछ और है अगर आप इस मुद्दे को देखते हैं।


-3

आपको अपने Ubuntu में पैकेज सूची को अपडेट करने की आवश्यकता है:

$ sudo apt-get update
$ sudo apt-get install <package_name>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.