उबंटू के साथ एक डॉक कंटेनर के अंदर पाइप पैकेज स्थापित नहीं कर सकते


86

मैं एक अजगर आवेदन के साथ docker का उपयोग करने के लिए अंजीर गाइड का पालन ​​कर रहा हूँ , लेकिन जब docker कमांड के लिए उठता है

RUN pip install -r requirements.txt

मुझे निम्न त्रुटि संदेश मिलता है:

Step 3 : RUN pip install -r requirements.txt
 ---> Running in fe0b84217ad1
Collecting blinker==1.3 (from -r requirements.txt (line 1))
  Retrying (Retry(total=4, connect=None, read=None, redirect=None)) after connection broken by 'ProtocolError('Connection aborted.', gaierror(-2, 'Name or service not known'))': /simple/blinker/

यह कई बार दोहराता है और फिर मुझे एक और संदेश मिलता है:

Could not find any downloads that satisfy the requirement blinker==1.3 (from -r requirements.txt (line 1))
  No distributions at all found for blinker==1.3 (from -r requirements.txt (line 1))

तो किसी कारण से पाइप डॉकटर कंटेनर के अंदर से किसी भी पैकेज का उपयोग नहीं कर सकता है। क्या मुझे इंटरनेट एक्सेस की अनुमति देने के लिए कुछ करने की आवश्यकता है?

हालाँकि, पाइप डॉकटर कंटेनर के बाहर की चीजों को स्थापित करने के लिए ठीक काम करता है, और उस सटीक पैकेज ( blinker==1.3) के साथ भी ठीक काम करता है ताकि समस्या न हो। इसके अलावा यह समस्या उस पैकेज के लिए विशिष्ट नहीं है। मैं किसी pip installभी पैकेज के लिए किसी भी कमांड के साथ एक ही मुद्दा प्राप्त करता हूं ।

किसी को भी यहाँ क्या हो रहा है किसी भी विचार है?


आपके डॉक कंटेनर में पाइप संस्करण क्या है? क्या आपने docker run mycontainer pip install -r requirements.pipअंजीर संदर्भ के बाहर की कोशिश की? फिर भी, यह एक पाइप संस्करण के मुद्दे की तरह लगता है। कुछ नए पाइप संस्करणों के लिए आपको कुछ और कमांड लाइन विकल्पों को निर्दिष्ट करने की आवश्यकता होती है, pip installताकि यह निश्चित पैकेजों को चला सके।
टॉरस्टेन एंजेलब्रैच

मेरा डॉकफाइल है, FROM python:2.7इसलिए यह पाइप का जो भी संस्करण होगा वह अजगर 2.7.9 के साथ आता है। मैंने अलग से पाइप कमांड चलाने की कोशिश नहीं की है, लेकिन ऐसा इसलिए है क्योंकि मुझे पाइप बनाने के लिए कंटेनर भी नहीं मिल रहा है क्योंकि पाइप काम नहीं कर रहा है। मैं एक खाली अजगर कंटेनर बनाने की कोशिश कर सकता हूं और परीक्षण करूंगा कि जब मुझे मौका मिले
मिगवेल

1
शायद आप कोशिश कर सकते हैं pip install --no-use-wheel --allow-all-external -r requirements.pipया अगर वह कोशिश करने में मदद नहीं करता है pip install --no-use-wheel --allow-all-external --allow-unverified blinker -r requirements.pip। मेरे साथ अतीत में मेरे लिए काम किया था जब मेरे साथ एक अनजानी त्रुटि हुई थी pip install। इसके अलावा आप DockerFile से उस लाइन को हटाने की कोशिश कर सकते हैं और फिर कंटेनर को बिना परीक्षण के निर्माण कर सकते हैं यदि कमांड बाद में निष्पादित कर सकता है। हालांकि कहा गया है, मुझे नहीं लगता कि यह मुद्दा यहां है।
टॉरस्टेन एंजेलब्रैच

"Docker build -t <app name>। --Network = host" चलाते समय आप तर्क जोड़ सकते हैं
अभिषेक कुमार

जवाबों:


60

आपकी समस्या इस तथ्य से आती है कि डॉकर उचित DNS सर्वर का उपयोग नहीं कर रहा है। आप इसे तीन अलग-अलग तरीकों से ठीक कर सकते हैं:

1. अपने स्थानीय विन्यास में Google DNS जोड़ना

/Etc/resolv.conf को संशोधित और अंत में निम्नलिखित पंक्तियों को जोड़ना

# Google IPv4 nameservers nameserver 8.8.8.8 nameserver 8.8.4.4

यदि आप अन्य DNS सर्वरों को जोड़ना चाहते हैं, तो यहां एक नज़र डालें ।

हालाँकि यह परिवर्तन स्थायी नहीं होगा ( इस धागे को देखें )। इसे स्थायी बनाने के लिए: $ sudo nano /etc/dhcp/dhclient.conf प्रीपेंड डोमेन-नेम-सर्वर के साथ लाइन को अनकम्फर्ट और एडिट करें: prepend domain-name-servers 8.8.8.8, 8.8.4.4;

रिहर्सल dhclient $ sudo dhclient:।

2. डॉकर कॉन्फिगर को संशोधित करना

जैसा कि डॉक्स में बताया गया है :

डेस्कटॉप पर उबंटू या उबंटू व्युत्पन्न को चलाने वाले सिस्टम आमतौर पर /etc/resolv.conf फ़ाइल में डिफ़ॉल्ट नाम के रूप में 127.0.0.1 का उपयोग करते हैं।

डॉकर द्वारा उपयोग के लिए एक DNS सर्वर निर्दिष्ट करने के लिए:

1. Log into Ubuntu as a user with sudo privileges.

2. Open the /etc/default/docker file for editing :

    $ sudo nano /etc/default/docker

3. Add the following setting for Docker.

    DOCKER_OPTS="--dns 8.8.8.8"

4. Save and close the file.

5. Restart the Docker daemon :

    $ sudo systemctl restart docker

3. जब आप डॉकर चलाते हैं तो एक पैरामीटर का उपयोग करना

जब आप docker चलाते हैं, तो बस निम्न पैरामीटर जोड़ें: --dns 8.8.8.8


1
मैंने docker- रचना में dns सेट किया है, और यह अभी भी काम नहीं करता है। कोई उपाय?
ismailsunni

14
ठीक है, मेरे docker- मशीन को पुनरारंभ करने से समस्या हल हो रही है। धन्यवाद
ismailsunni

1
Google DNS को स्थानीय कॉन्फ़िगर में जोड़ने के बाद इसने मेरे लिए काम किया लेकिन डॉकर कॉन्फ़िगर फ़ाइल में DNS सर्वर को निर्दिष्ट किए बिना (यह काम नहीं करता अगर मैं करता हूं)। मैं Ubuntu 14.04 का उपयोग कर रहा हूं, डॉकर 1.12.2 के साथ
माइनसडक

जहां तक ​​मुझे पता है, --dnsझंडा केवल dockerकमांड पर उपलब्ध है । मुझे अभी तक डॉकटर-कम्पोज़ के लिए एक समकक्ष नहीं मिला है।
सेबेस्टियलोनो

26

मुझे अपने docker निर्माण कमांड में --network = होस्ट जोड़ने की आवश्यकता थी:

docker build --network=host -t image_name .

2
इसने मेरे Ubuntu 19.10 वीएम में कुछ भी बदलने के लिए w / o के लिए काम किया (जो विंडो 10 पर हाइपर-वी क्विक क्रिएट के साथ बनाया गया था)
Wlad

22

मेरे पास एक ही मुद्दा था और इसने मुझे कुछ समय के लिए त्रस्त कर दिया और मैंने ऑनलाइन समाधान के कई प्रयास किए लेकिन कोई फायदा नहीं हुआ। हालाँकि मैंने अंततः इसे इस प्रकार हल किया:

चल रहा है:

Ubuntu 16.04 
docker Server 18.03.0-ce
  1. अपने DNS सर्वर का पता खोजें।

    निम्नलिखित कमांड चलाकर अपने DNS सर्वर का पता खोजें:

    $: nmcli dev show | grep 'IP4.DNS'
    IP4.DNS[1]:                192.168.210.2
    
  2. डॉकर डेमॉन को अपडेट करें

    एक docker config फाइल बनाएं /etc/docker/daemon.json.( यदि आपके पास पहले से कोई नहीं है ) और निम्न सामग्री को फाइल में जोड़ें:

    {
        "dns": ["192.168.210.2", "8.8.8.8"]
    }
    

    एरे का पहला आइटम आपके नेटवर्क का डीएनएस सर्वर है और दूसरा है जब आपके नेटवर्क का डीएनएस उपलब्ध नहीं है तो यह गूगल का डीएनएस सर्वर है।

    फ़ाइल सहेजें और फिर docker सेवा को पुनरारंभ करें

    $: sudo service docker restart
    

2
इससे मेरी समस्या हल हो गई docker-ce। नोट: मेरे पास फ़ाइल नहीं थी daemon.json। संभवतः वह फ़ाइल स्थापना के दौरान डिफ़ॉल्ट रूप से नहीं बनाई गई है और आपको इसे मैन्युअल रूप से बनाने की आवश्यकता है।
floatingpurr

2
यह केवल एक चीज है जिसने मेरे लिए उबंटू 18.04.1 को काम किया। मुझे nmcli कमांड से 2 DNS मिल सकते हैं और daemon.json में दोनों शामिल हैं।
न्यूलप ऑप

यह केवल एक चीज है जिसने मेरे लिए उबंटू 18.04.2 पर काम किया। इस पोस्ट में पहले समाधान का प्रस्ताव दिया गया था, डेकाुलिया के जवाब से
पैट्रिस जी

इसने काम कर दिया। इसके अलावा यह समाधान कम घुसपैठ है जिस तरह से बाकी है। धन्यवाद!
सेबेस्टियलोनो

CentOS पर काम किया 7. धन्यवाद !!
10

16

ठीक है, मेरे docker- मशीन को पुनरारंभ करने से समस्या हल हो रही है। साभार - इमेल्सुन्नी

यह मेरे लिए समाधान था:

docker-machine restart <machine-name>

1
Windows का उपयोग करने वाले आप में से लोगों के लिए और यह सुनिश्चित करने के लिए कि <मशीन-नाम> arg क्या होना चाहिए: मैंने अभी एक PowerShell खोला docker-machine restartऔर फिर भाग गया और फिर docker-machine env(जैसा कि इसने मुझे प्रेरित किया था) और इसने समस्या को ठीक कर दिया।
नाथन विल्वेस


8

उबंटू उपयोगकर्ताओं के लिए

आपको docker config में नए DNS एड्रेस को जोड़ना होगा

sudo nano /lib/systemd/system/docker.service

ExecStar के बाद dns जोड़ें।

--dns 10.252.252.252 --dns 10.253.253.253

इस तरह दिखना चाहिए:

ExecStart=/usr/bin/dockerd -H fd:// --dns 10.252.252.252 --dns 10.253.253.253

फिर करो:

systemctl daemon-reload
sudo service docker restart

कार्य करना चाहिए।


1
यह एकमात्र समाधान है जिसने मेरे लिए काम किया है। उबंटू 16.04, डॉकटर 17.03.1-ce
साइमन आर्सेनॉल्ट

2
Ubuntu 16.04 पर काम करने से कुछ और मदद नहीं मिली।
Shanky

मैं इसके बाद docker को प्रारंभ नहीं कर सकता: docker.service: परिणाम 'निकास-कोड' के साथ विफल।
davegallant

2
क्या विशेष रूप से 10.252.252.252 और 10.253.253.253 के बारे में कुछ विशेष है। मैं उबंटू 16.04डोकर चला रहा हूं 17.09.0-ceऔर यह काम नहीं करता है
अधिकतम

1
उबंटू 18.04.2 LTS और डॉकर 18.06.1-CE पर काम नहीं किया
PatriceG

6

मेरे मामले में, मुझे docker version 1.13.0और उसके docker-machine 0.9.0नीचे Ubuntu 16.04थोड़ा तंजाहो के उत्तर को संशोधित करना पड़ा (2. डॉकिंग विन्यास को संशोधित करना) निम्नानुसार है:

  1. Sudo विशेषाधिकार वाले उपयोगकर्ता के रूप में उबंटू में प्रवेश करें।

  2. संपादन के लिए / etc / डिफ़ॉल्ट / docker फ़ाइल खोलें:

    sudo vim /etc/default/docker
    
  3. डॉकर के लिए निम्न सेटिंग जोड़ें।

    DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"
    
  4. फ़ाइल को सहेजें और बंद करें।

  5. डॉकटर डेमॉन को पुनः आरंभ करें:

    sudo service docker restart
    

6

मामले में कोई docker- रचना का उपयोग कर इसे पढ़ रहा है। मैं अपनी yaml फ़ाइल को निम्नानुसार बदलकर इसे हल करने में कामयाब रहा

version: 3.4
service: my-app
  build:
  context: .
  network: host

जो लिखने के बराबर है

docker build . --network host

5

मेरे लिए, मैं डॉकर के DNS को ठीक से कॉन्फ़िगर नहीं किए जाने के कारण पाइप को स्थापित करने में असमर्थ था। मैंने उपरोक्त चरणों की कोशिश की है, हालांकि, Google DNS के लिए docker DNS को कॉन्फ़िगर करना मेरे लैपटॉप के लिए काम नहीं करता है। डॉकर का डीएनएस तभी ठीक से कॉन्फ़िगर किया जा सकता है जब मैं उसके डीएनएस को अपने लैपटॉप के असाइन किए गए आईपी पर सेट कर दूं।

यदि आप Ubuntu का उपयोग करते हैं, तो आप अपने डॉकर के DNS को कॉन्फ़िगर करने के लिए निम्न चरणों का उपयोग कर सकते हैं:

  1. अपने डिवाइस के निर्दिष्ट IP का पता लगाएं। आप इसे या तो पा सकते हैं

    • अपने ईथरनेट या इटल के inet योजक की जाँच करना ifconfig
    • में कोई भी पता चुनना nmcli dev show | grep 'DNS'
  2. में संपादन संपादित करें /etc/docker/daemon.json(यदि यह पहले से मौजूद नहीं है तो यह फ़ाइल बनाएं)

    {
        "dns": ["your_ip_in_step_1"]
    }
    
  3. पुनः आरंभ करें: sudo service docker restart


मेरे लिए भी काम किया। यह ऐसा समाधान प्रतीत होता है जो नए डॉक वर्जन पर लागू होता है। जानकारी के लिए, Askubuntu.com/a/790778/776407 पर
स्टीफन सीबर

4

एक डॉकर नौसिखिया के रूप में, मुझे एक समस्या थी जो खुद को इस तरह से प्रकट करती थी जब मैं डॉकर के लिए ट्यूटोरियल का पालन कर रहा था:

https://docs.docker.com/get-started/part2

मैं कॉरपोरेट लैन पर डॉक 17.03.1-CE का उपयोग कर रहा हूं।

मैंने अपनी DNS सेटिंग्स को चेक और डबल किया। मैंने अपने इंटरनेट में अपनी खोजों में पाए गए DNS को कॉन्फ़िगर करने के विभिन्न तरीकों का उपयोग किया है। कुछ ने स्टार्टअप पर त्रुटियों का कारण बना। अंततः डीएनएस को कॉन्फ़िगर करने के लिए मैंने जो दृष्टिकोण तय किया था, वह उपरोक्त लिंक के समस्या निवारण लिनक्स अनुभाग में एक था, जहां डीएनएस / etc / docker निर्देशिका में डेमन.जॉन फ़ाइल के माध्यम से कॉन्फ़िगर किया गया है।

हालाँकि, मेरे पास अभी भी यही मुद्दा था। आखिरकार मेरे लिए समस्या का हल क्या था http_proxy और https_proxy पर्यावरण चर के माध्यम से प्रॉक्सी का कॉन्फ़िगरेशन । मैंने उन्हें अपने डॉकरफाइल में निर्दिष्ट किया था, लेकिन मैंने आरयूएन पाइप कमांड से पहले ऐसा करने की उपेक्षा की।

भले ही यह DNS मुद्दा प्रतीत हो रहा हो, लेकिन इन ENV कमांड को RUN कमांड से आगे ले जाने से मेरे लिए फर्क पड़ा। ऐसे मामले में जो इस समस्या से ग्रस्त किसी व्यक्ति के लिए सहायक हो।


यह एकमात्र समाधान है जिसने मेरे लिए काम किया। धन्यवाद!!
msingh

3

मुझे इसका कारण नहीं पता है, लेकिन त्रुटि का मतलब है कि पाइप भाग के /simple/blinker/बजाय एक DNS होस्टनाम के रूप में हल करने की कोशिश कर रहा है pypi.python.org, जो बहुत ही अजीब लगता है क्योंकि मैं किसी भी URL के साथ नहीं आ सकता हूं जिसके लिए urlparseएक होस्टनाम के रूप में इस तरह के स्ट्रिंग को वापस कर सकता है। अंश। मैं जाँच करूँगा कि क्या कोई समस्या है~/.pip/pip.conf


3

मुझे एक ही समस्या थी। त्रुटि का कारण प्रॉक्सी है।

इसलिए, मैं निम्नलिखित डॉकरफाइल को संपादित करता हूं

RUN pip install -r /app/requirements.txt --proxy=http://user:pass@addr:port

इसने मेरे मामले में काम किया है। प्रॉक्सी ऑप्शन से [user: passwd @] को निकालना आवश्यक था, जो कि पाइप डॉक्यूमेंट के अनुसार वैकल्पिक है: --proxy <प्रॉक्सी>: फॉर्म में एक प्रॉक्सी निर्दिष्ट करें [user: passwd @ ]xy.server: port।
एलेक्स जावारोटी

3

मेरे लिए, यह मेरे विश्वविद्यालय वीपीएन से जुड़े होने के कारण था। डिस्कनेक्टिंग ने समस्या को "हल" कर दिया।


1

Google DNS (8.8.8.8) या 10.0.0.2 पर docker DNS को कॉन्फ़िगर करना मेरी कंपनी के वातावरण में काम नहीं किया।

रनिंग: $ ड्रिल @ 8.8.8.8 www.amazon.com या @ 10.0.0.2 ने इसकी पुष्टि की।

एक DNS खोजने के लिए जो मैं काम करता था वह चला गया: $ ड्रिल www.amazon.com और इसने मुझे DNS आईपी दिया जो कि मेरे नेटवर्क में उपयोग किया जा रहा है।

तब मैंने इसे डॉकर्स डीएनएस को कॉन्फ़िगर करने के लिए निम्न चरण का उपयोग करके उबंटू में सेट किया।

/Etc/docker/daemon.json में परिवर्तित डीएन

{
    "dns": ["the DNS ip from step1"]
}

Restart docker: sudo service docker restart

मैं उसी स्थिति में हूं लेकिन समाधान मेरे लिए काम नहीं करता है। मेरे कंटेनर अभी भी बाहर के इंटरनेट से नहीं जुड़ पा रहे हैं
harpratap

1

डॉक करने के लिए नया हूँ और यहाँ बताए गए सभी तरीकों की कोशिश की, लेकिन फिर भी यह सही नहीं हुआ। डॉकर संस्करण 18 था, और ubuntu संस्करण 16 था। मैंने इस पद्धति की कोशिश की: - पहले मैं कंपनी के इंटरनेट नेटवर्क के साथ डॉक का निर्माण कर रहा था। यह नेटवर्क कुछ साइटों या कुछ चीजों को अवरुद्ध कर रहा है जो यहां अच्छी तरह से नहीं चलती हैं। तो दूसरा मैं अपने बहुत ही नेटवर्क से जुड़ा हुआ हूं (जो मोबाइल फोन में उपयोग कर रहा हूं, उदाहरण के लिए) और कोशिश की। चीजें सही हुईं। requirement.txt सफलतापूर्वक स्थापित किया गया था, और docker का निर्माण किया गया था।


0

इसे चलने दो। कभी-कभी pypi में कनेक्शन के मुद्दे होते हैं, जिन्हें आपके चेहरे पर नोच दिया जाता है ताकि आपको लगे कि यह टूट गया है। बस यह सुनिश्चित करने के लिए, इसे रोल करने दें, आप पा सकते हैं कि यह इसे खुद के लिए काम करता है।

नीचे की रेखा, इन लाल त्रुटि रेखाओं के बावजूद, "सफलतापूर्वक निर्मित" है

$ docker build .
Sending build context to Docker daemon 2.048 kB
Step 1 : FROM docker-registry.aws.example.com:5000/cmcrc/python2:20160517120608
 ---> 1e5034711aa9
Step 2 : RUN pip install prometheus-client requests
 ---> Running in f3c580fc93ae
Collecting prometheus-client
  Retrying (Retry(total=4, connect=None, read=None, redirect=None)) after connection broken by 'NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.HTTPConnection object at 0x7fe15a1d8610>: Failed to establish a new connection: [Errno -2] Name or service not known',)': /pypi/prometheus-client/
  Retrying (Retry(total=3, connect=None, read=None, redirect=None)) after connection broken by 'NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.HTTPConnection object at 0x7fe15a1d87d0>: Failed to establish a new connection: [Errno -2] Name or service not known',)': /pypi/prometheus-client/
  Retrying (Retry(total=2, connect=None, read=None, redirect=None)) after connection broken by 'NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.HTTPConnection object at 0x7fe15a1d8990>: Failed to establish a new connection: [Errno -2] Name or service not known',)': /pypi/prometheus-client/
  Retrying (Retry(total=1, connect=None, read=None, redirect=None)) after connection broken by 'NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.HTTPConnection object at 0x7fe15a1d8b50>: Failed to establish a new connection: [Errno -2] Name or service not known',)': /pypi/prometheus-client/
  Retrying (Retry(total=0, connect=None, read=None, redirect=None)) after connection broken by 'NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.HTTPConnection object at 0x7fe15a1d8d10>: Failed to establish a new connection: [Errno -2] Name or service not known',)': /pypi/prometheus-client/
  Downloading prometheus_client-0.0.13.tar.gz
Collecting requests
  Retrying (Retry(total=4, connect=None, read=None, redirect=None)) after connection broken by 'NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.HTTPConnection object at 0x7fe159e9d4d0>: Failed to establish a new connection: [Errno -2] Name or service not known',)': /pypi/requests/
  Retrying (Retry(total=3, connect=None, read=None, redirect=None)) after connection broken by 'NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.HTTPConnection object at 0x7fe159e9da10>: Failed to establish a new connection: [Errno -2] Name or service not known',)': /pypi/requests/
  Retrying (Retry(total=2, connect=None, read=None, redirect=None)) after connection broken by 'NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.HTTPConnection object at 0x7fe159e9dc50>: Failed to establish a new connection: [Errno -2] Name or service not known',)': /pypi/requests/
  Retrying (Retry(total=1, connect=None, read=None, redirect=None)) after connection broken by 'NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.HTTPConnection object at 0x7fe159e9de10>: Failed to establish a new connection: [Errno -2] Name or service not known',)': /pypi/requests/
  Retrying (Retry(total=0, connect=None, read=None, redirect=None)) after connection broken by 'NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.HTTPConnection object at 0x7fe159e9dfd0>: Failed to establish a new connection: [Errno -2] Name or service not known',)': /pypi/requests/
  Downloading requests-2.10.0-py2.py3-none-any.whl (506kB)
Building wheels for collected packages: prometheus-client
  Running setup.py bdist_wheel for prometheus-client: started
  Running setup.py bdist_wheel for prometheus-client: finished with status 'done'
  Stored in directory: /root/.cache/pip/wheels/04/94/f5/b803b2ff65e8344e99ca99b7f7cb8194224017167809a32b78
Successfully built prometheus-client
Installing collected packages: prometheus-client, requests
Successfully installed prometheus-client-0.0.13 requests-2.10.0
 ---> 19c5e3cfe08f
Removing intermediate container f3c580fc93ae
Successfully built 19c5e3cfe08f
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.