डॉकर जाने की बुनियादी समझ पाने के लिए मैं सिर्फ एक साधारण उदाहरण के साथ खेल रहा हूं। यहाँ मेरी डॉकर छवि फ़ाइल है:

FROM python:3.7-alpine

# copy all the files to the container
COPY . /test
WORKDIR /test

# install dependencies
RUN pip install pip_system_certs --trusted-host pypi.org --trusted-host files.pythonhosted.org --trusted-host pypi.python.org
RUN pip install -r requirements.txt



# run the command
CMD ["python", "./test_script.py"]

विश्वसनीय-होस्ट विकल्प वे हैं जो हमें कॉर्पोरेट नेटवर्क सुरक्षा सेटिंग्स को प्राप्त करने और विंडोज़ पर आंतरिक रूप से पैकेज स्थापित करने की अनुमति देते हैं और वे डॉकर में भी काम करते हैं, लेकिन केवल कुछ पैकेजों के लिए। उदाहरण के लिए यदि मेरी आवश्यकताएँ

चेतावनी: पुन: प्रयास (पुनः प्रयास करें (कुल = 4, कनेक्ट = कोई नहीं, पढ़ें = कोई नहीं, रीडायरेक्ट = कोई नहीं, स्थिति = कोई नहीं)) 'एसएसएलईआरर (एसएसएलसीर्ट सत्यापन त्रुटि (1,' [एसएसएल: CERTIFICATE_VERIFY_FAILED] प्रमाणपत्र सत्यापन विफल होने के बाद कनेक्शन टूट गया: स्वयं हस्ताक्षरित प्रमाणपत्र श्रृंखला में प्रमाणपत्र (_ssl.c:1076)'))': /simple/numpy/

और विफल रहता है। मुझे लगता है कि यह अजीब है कि यह कुछ पैकेजों के लिए काम कर रहा है लेकिन दूसरों के लिए नहीं।

किसी भी मदद की सराहना की।

विंडोज 10 में डॉकर डेस्कटॉप का उपयोग करना।

1
Josh Gredvig 9 जिंदा 2020, 21:39

1 उत्तर

मुझे पता है कि मेरी कंपनी की बड़ी कॉर्पोरेट प्रॉक्सी (अधिकांश) सामान्य प्रमाणपत्रों को हटा देती है और उन्हें स्व-हस्ताक्षरित प्रमाणपत्र में फिर से लपेट देती है। इसने मेरे लिए बहुत सारे समान सिरदर्द पैदा किए। मैंने इसे हल किया:

  • क्रोम में किसी इंटरनेट साइट पर जाकर, एड्रेस बार में लॉक पर क्लिक करके, और साइट के सर्टिफिकेट के लिए सर्टिफिकेशन पाथ देखकर यह पता लगाना कि हमारा रूट सर्टिफिकेट क्या था। रूट सीए हमारा आंतरिक था।
  • विंडोज कंट्रोल पैनल में सर्टिफिकेट मैनेजमेंट में जाने और "ट्रस्टेड रूट सर्टिफिकेशन" के तहत मेरी कंपनी का आंतरिक रूट सर्टिफिकेट मिला और इसे "बेस -64 एन्कोडेड X.509" फाइल के रूप में एक्सपोर्ट किया।
  • उस प्रमाणपत्र फ़ाइल को मेरे डॉकर कंटेनर में कॉपी किया और इसे मेरे कंटेनर के अंदर "ओएस" में सीए प्रमाणपत्र के रूप में जोड़ा। उसके बाद, मैंने अपने कंटेनर में जो कुछ भी चलाया, वह बस काम कर गया।

यहां चरण 3 के साथ पकड़ यह है कि आप इसे कैसे करते हैं यह लिनक्स के विभिन्न स्वादों के लिए अलग है। मैं अल्पाइन के बारे में ज्यादा नहीं जानता, लेकिन ये लिंक आपको मोटे तौर पर सही दिशा में इंगित कर सकते हैं: https://blog.confirm.ch/adding-a-new -विश्वसनीय-प्रमाण पत्र-प्राधिकरण/
https://github.com/gliderlabs/docker-alpine/issues/260

साथ ही, बोनस कैच - यदि आप अपने एप्लिकेशन में पायथन के अनुरोधों लाइब्रेरी का उपयोग करते हैं, तो यह डिफ़ॉल्ट रूप से सिस्टम CA certs का उपयोग नहीं करता है। यदि यह आपके लिए एक समस्या है, तो यहां स्वीकृत उत्तर में REQUESTS_CA_BUNDLE सेट करने के बारे में पढ़ें: पायथन अनुरोध - सिस्टम सीए-प्रमाणपत्र (डेबियन/उबंटू) का उपयोग कैसे करें?

4
sql_knievel 22 जिंदा 2021, 21:52
आपका क्या मतलब है "उस प्रमाणपत्र फ़ाइल को मेरे डॉकर कंटेनर में कॉपी किया"? आपने प्रमाणपत्र की स्थापना को Dockerfile में जोड़ा है?
 – 
madhat1
12 मई 2021, 12:25
- इसके ऊपर के चरण का परिणाम "बेस -64 एन्कोडेड X.509" फ़ाइल के रूप में निर्यात किया गया प्रमाणपत्र है। मान लें कि आपने इसे अपने स्थानीय ड्राइव पर "my_cert.pem" के रूप में सहेजा है। अब आपको डॉकर कंटेनर के भीतर से उस "my_cert.pem" फ़ाइल को संदर्भित करने के लिए किसी तरह की आवश्यकता है - सबसे आसान तरीका है कि आप अपने Dockerfile में COPY कमांड का उपयोग करके फ़ाइल को अपने Docker कंटेनर में कॉपी करें। अब जब प्रमाणपत्र फ़ाइल आपके डॉकर कंटेनर के अंदर है, तो आपको उस पर भरोसा करने के लिए कंटेनर के अंदर "ओएस" को बताना होगा। यह इस उत्तर के दायरे से बाहर है, क्योंकि यह कुछ हद तक ओएस पर निर्भर है। लिंक देखें जिसे मैंने शुरुआत के रूप में शामिल किया था।
 – 
sql_knievel
12 मई 2021, 20:08