2014-09-25 15 views
27

क्या डॉकर पुल से आए छवियों के लिए एसएसएल प्रमाण पत्र जोड़ने का कोई शानदार तरीका है?डॉकर कंटेनर एसएसएल प्रमाणपत्र

मैं/etc/ssl/certs में फ़ाइल जोड़ने और अपडेट-सी-प्रमाणपत्र चलाने के लिए एक सरल और पुनरुत्पादनीय तरीका ढूंढ रहा हूं। (इसमें उबंटू और डेबियन छवियां शामिल होनी चाहिए)।

मैं कोरोस पर डॉकर का उपयोग कर रहा हूं, और कोरोस मशीन आवश्यक एसएसएल प्रमाणपत्रों पर भरोसा करती है, लेकिन डॉकर कंटेनरों में स्पष्ट रूप से केवल डिफ़ॉल्ट होता है।

मैंने docker run --entrypoint=/bin/bash का उपयोग करने का प्रयास किया है, फिर प्रमाणपत्र जोड़ें और update-ca-certificates चलाएं, लेकिन ऐसा लगता है कि यह प्रविष्टि बिंदु को स्थायी रूप से ओवरराइड करता है।

मैं अब भी सोच रहा हूं, क्या यह होस्ट मशीन कॉपी से कंटेनर पर /etc/ssl/certs पर माउंट करने के लिए और अधिक सुरुचिपूर्ण होगा? ऐसा करने से कंटेनरों को मेजबान के समान चीजों पर विश्वास करने की अनुमति मिल जाएगी।

मैं -v का उपयोग कर एक कष्टप्रद प्रॉक्सी है कि सब कुछ :(इस्तीफा कौन सा एसएसएल टूट जाता है और कंटेनर तरह-के साथ काम करने के अजीब बनाता है के साथ काम पर हूँ

+1

क्या आपने डॉकरफ़ाइल बनाने के बारे में सोचा है जो आपकी छवि का उपयोग करेगा, फ़ाइल जोड़ें और अद्यतन-सीए-प्रमाणपत्र चलाएगा? या वह वह नहीं है जिसे आप ढूंढ रहे हैं? –

+0

मैंने कुछ छवियों के लिए ऐसा किया है। यह एक बुरा समाधान नहीं है। हालांकि आपको अपने सभी छवियों को अपने साथ बनाने की आवश्यकता है। –

उत्तर

34

माउंट डोकर कंटेनर पर प्रमाणपत्र:।।

docker run -v /host/path/to/certs:/container/path/to/certs -d IMAGE_ID "update-ca-certificates" 
+2

यह सुंदर निफ्टी है। यदि कंटेनर ssl_certs की एक ही शैली का उपयोग करता है तो आपको अपडेट-सीए-सर्टिफिकेट लाइन की भी आवश्यकता नहीं होगी, होस्ट पहले से ही कर चुका होगा :)। –

10

के रूप में एक comment above में सुझाव दिया गया था, अगर मेजबान पर प्रमाणपत्र संग्रह अतिथि के साथ संगत है, तो आप सिर्फ यह सीधे माउंट कर सकते हैं।

हे n एक डेबियन मेजबान (और कंटेनर), मैं सफलतापूर्वक किया है:

docker run -v /etc/ssl/certs:/etc/ssl/certs:ro ... 
9

मैं इस के समान कुछ करने के लिए कोशिश कर रहा हूँ। जैसा कि ऊपर टिप्पणी की गई है, मुझे लगता है कि आप कस्टम डॉकरफाइल (मूल छवि के रूप में खींची गई छवि का उपयोग करके), ADD अपने प्रमाणपत्र, फिर RUN update-ca-certificates के साथ एक नई छवि बनाना चाहते हैं। हर बार जब आप इस नई छवि से कंटेनर शुरू करते हैं तो इस तरह आपके पास एक सतत स्थिति होगी।

# Dockerfile 
FROM some-base-image:0.1 
ADD you_certificate.crt:/container/cert/path 
RUN update-ca-certificates 

मान लें कि Dockerfile IMAGE_ID उत्पादन के खिलाफ एक docker build करते हैं। अगले docker run -d [any other options] IMAGE_ID पर, उस आदेश द्वारा प्रारंभ किए गए कंटेनर में आपकी प्रमाणपत्र जानकारी होगी। सरल और पुनरुत्पादित।

+0

आमतौर पर मैं अन्य उत्तरों में उल्लिखित डॉकर रन-वी समाधान पसंद करूंगा। लेकिन डॉकर बिल्ड के दौरान आपको प्रमाणपत्र की आवश्यकता होने पर आपका समाधान भी काम करता है। धन्यवाद! – bastian

+3

मैं किसी भी सार्वजनिक कंटेनर में प्रमाणपत्र डालने से सावधान रहूंगा। कोई और आपके कंटेनर खींच सकता है और अपने निजी कॉर्ट निकाल सकता है। – skibum55

+2

हालांकि यह एक बहुत अच्छा मुद्दा है, उपर्युक्त समाधान कुछ भी सार्वजनिक नहीं करता है। इसका मतलब है कि अपने स्वयं के प्रमाण पत्र को उस छवि में जोड़ना है जो स्थानीय रूप से बनाया गया है और फिर निजी रूप से उपयोग किया जाता है। आप _could_ फिर परिणामी छवि को सार्वजनिक भंडार में धक्का देते हैं, लेकिन यह एक बुरा विचार होगा जैसा आपने कहा था। – shudgston

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