2015-12-28 5 views
5

मेरे मामले में, मैंने अपने यूनिक्स आधारित होस्ट पर ssmtp पैकेज स्थापित किया है। किसी कारण से, मेरी स्थिति में सबसे अच्छा तरीका मेरे होस्ट कंटेनर में मेल (एचटीएमएल फाइल) भेजने के लिए मेरे होस्ट पर एसएसएमटीपी बाइनरी (अंडर/यूएसआर/एसबीएन) का उपयोग कर रहा है।क्या मेजबान से माउंट कंटेनर में बाइनरी निष्पादित करने का कोई समाधान है?

docker run -v /usr/sbin:/host_sbin --name=myapp -ti -p 889:80 -p 890:5432 myimage 

और ssmtp निष्पादित करने के लिए, यहाँ कुछ अजीब की कोशिश करता है और उनके परिणाम हैं की कोशिश:

मैं कंटेनर में मेजबान निर्देशिका/usr/bin माउंट करने के लिए प्रयास

मेरी एपीपी कंटेनर में और के तहत/host_sbin

ssmtp ---> bash: ssmtp: command not found 
./ssmtp ---> bash: ./ssmtp: No such file or directory 

तो ऐसा लगता है कि चीजें नहीं हैं मुझे लगता है कि सरल है। क्या किसी ने मेरे साथ इस तरह के समाधान की तरह कुछ किया है? और अगर कोई मुझे समझा सकता है तो मैं सराहना करता हूं कि यह क्यों काम नहीं करता है।

+1

में विन्यास फाइल मिले यह एक उपयोगी [https://github.com/larsks/dockerize](https://github। कॉम/लार्क्स/डॉकराइज) – dtmland

उत्तर

6

बस अपने कंटेनर में बाइनरी बढ़ाना ssmtp बाइनरी संभवतः स्थिर रूप से लिंक नहीं है। इसके बजाए यह आपके मेजबान सिस्टम में मौजूद साझा पुस्तकालयों के सेट पर गतिशील रूप से जुड़ा हुआ है, लेकिन आपके कंटेनर में नहीं है। आप ldd आदेश का उपयोग कर पुष्टि कर सकते हैं, whilch सभी पुस्तकालयों कि ssmtp द्विआधारी के खिलाफ जुड़ा हुआ है प्रिंट होगा:

> ldd /usr/sbin/ssmtp 

आप अपने मेजबान ssmtp द्विआधारी उपयोग करना चाहता था, तो आप भी में सभी आवश्यक साझा पुस्तकालयों माउंट करने के लिए होगा आपका कंटेनर (और लाइब्रेरी पथ को समायोजित करें और इसी तरह; मैं अनुशंसा नहीं करता)।


यहाँ मेरी सुझाव है: महत्वपूर्ण बिट शायद नहीं ssmtp द्विआधारी, लेकिन SSMTP के विन्यास फाइल (अपने वितरण पर निर्भर करता है, लेकिन आम तौर /etc/ssmtp में पाया) है। मैं सुझाव दूंगा ...

  1. छवि के मूल पैकेज प्रबंधक का उपयोग करके अपने कंटेनर के अंदर ssmtp स्थापित करना। मेजबान से कंटेनर में बाइनरी माउंट मत करो।
  2. माउंट मेजबान SSMTP अपने कंटेनर (कंटेनर निर्माण पर -v /etc/ssmtp:/etc/ssmtp ध्वज का उपयोग कर)
+0

मैं वास्तव में इसकी सराहना करता हूं, आपकी युक्तियों को accroding ऐसा लगता है कि सभी पुस्तकालयों को बढ़ाना एक अच्छा तरीका नहीं है। असल में, मैंने आपके सुझाव का थोड़ा सा प्रयास किया था, लेकिन मुझे जो सामना हुआ वह कंटेनर में एसएमटीपी संचार बंदरगाह है, ऐसा लगता है कि एसएमटीपी कार्यों के लिए -पी पोर्ट अग्रेषण सही दिशा नहीं है? मेरी खराब क्षमता के बारे में क्षमा करें, क्या आपने पहले यह किया है? धन्यवाद! – Carr

+0

टिप्पणी में मेरे प्रश्न को अनदेखा करें, मैं बस कुछ बेवकूफ चीज करता हूं। अब यह काम कर रहा है! आपका बहुत बहुत धन्यवाद! – Carr

+3

'ldd' कमांड के लिए उपयोगी सूचक जो समझने में उपयोगी था कि जब बाइनरी कंटेनर-टू-डॉकर से घुड़सवार होता है तो क्या होता है। –

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