2014-04-07 17 views
25

मैं अपना खुद का लोचदार खोज उदाहरण स्थापित करने के बजाय the official elasticsearch Docker image का उपयोग कर रहा हूं। और यह उस समय तक बढ़िया काम करता है जब मैं इसे विस्तारित करना चाहता था। मैं अधिक जानकारी प्राप्त करने के लिए उस लोचदार खोज उदाहरण में marvel स्थापित करना चाहता था।मौजूदा डॉकर छवि का विस्तार कैसे करें?

अब/elasticsearch स्वचालित रूप से ElasticSearch चलाता है और /bin/bash के आदेश की स्थापना काम नहीं करता है, न तो कंटेनर के लिए संलग्न या SSH पर इसे उपयोग करने की कोशिश कर रहा, और न ही apt-get install -y openssh-server साथ ssh-डेमॉन को स्थापित करता है dockerfile।

इस विशेष मामले में, मैं बस कंटेनर फ़ाइल सिस्टम में जा सकता हूं और opt/elasticsearch/bint/plugin -i elasticsearch/marvel/latest निष्पादित कर सकता हूं और सबकुछ काम करता है।

लेकिन मैं एक अतिरिक्त सेवा कैसे स्थापित कर सकता हूं जिसे apt-get के साथ स्थापित करने की आवश्यकता है जब मेरे पास चलने वाले कंटेनर के अंदर टर्मिनल नहीं हो सकता है?

+0

[elasticsearch url] (https://hub.docker.com/r/_/elasticsearch/) [https://hub.docker.com/r/_/elasticsearch/](https:/ में बदल गया /hub.docker.com/r/_/elasticsearch/) – luckydonald

उत्तर

29

बस एक Dockerfile कि

FROM dockerfile/elasticsearch 

के साथ शुरू और चमत्कार या ssh-सर्वर या जो भी आप की जरूरत है स्थापित करने का उपयोग कर इसे विस्तार। फिर, अपनी सेवाओं को शुरू करने के लिए सही कमांड के साथ समाप्त करें। आप बहुविध सेवाओं को शुरू करने के लिए पर्यवेक्षक का उपयोग कर सकते हैं, उस पर अधिक जानकारी के लिए Run a service automatically in a docker container देखें।

+0

क्या किसी छवि के विपरीत डॉकरफ़ाइल का विस्तार करने का कोई तरीका है? कहें कि मेरे पास एक ईमेल सर्वर के लिए डॉकरफ़ाइल है। यह विभिन्न तरीकों से फ़ाइलों को संग्रहीत करता है (अमेज़ॅन एस 3, सीईपीएच, आदि) तो मुझे उन सेवाओं में से प्रत्येक के लिए लाइब्रेरी की आवश्यकता है। मैं सर्वर के लिए आधार डॉकरफ़ाइल और फिर फ़ाइलों को स्टोर करने के लिए उपयोग की जाने वाली एक डॉकरफ़ाइल प्रति सेवा चाहता हूं। यह सब मध्यवर्ती छवियों के बारे में चिंता किए बिना। – conradkdotcom

+1

नहीं। इस मामले में एक रणनीति एक साझा करने वाली कार्यक्षमता के साथ एक डॉकरफ़ाइल हो सकती है, जैसा कि आप इसमें डाल सकते हैं, और नई बिल्ड छवि पर विस्तारित छोटी डॉकरफ़ाइल की एक सरणी जो आपकी सेवा को विशिष्ट सेवा – qkrijger

+0

@qkrijger के लिए इंस्टॉल करती है - मुझे शुरू करने के लिए धन्यवाद सही सड़क - मैंने अपने हाल के जवाब में पूरी तरह से काम करने वाला डॉकरफ़ाइल प्रदान किया है। – arcseldon

2

यदि आपको डॉकर-रचना का उपयोग करने में कोई फर्क नहीं पड़ता है, तो मैं आमतौर पर जो मूल छवि का पुन: उपयोग करने की योजना बना रहा हूं, उसके लिए पहला अनुभाग जोड़ना है, और उसके बाद उस छवि का उपयोग शेष सेवाओं में आधार के रूप में करें 'Dockerfiles, की तर्ज पर कुछ:

--- 
version: '2' 
services: 
    base: 
     build: ./images/base 

    collector: 
     build: ./images/collector 

फिर, छवियों में/कलेक्टर/Dockerfile, और के बाद से अपने प्रोजेक्ट webtrack कहा जाता है, मैं टाइप करेंगे

FROM webtrack_base 
... 

और अब यह हो गया है!

0

अद्यतन अगस्त वर्ष 2016

कैसे ElasticSearch (उदाहरण के लिए 2.3.5), Kibana (4.5.3) और मार्वल & नब्ज प्लगइन्स के नवीनतम संस्करण के साथ ऐसा करने पर बहुत कम वर्तमान जानकारी मिली, मैं खड़े रास्ते को लेने और अपनी खुद की छवि लिखने का विकल्प चुना। तुम सिर्फ पहले से बने छवि तो कृपया चाहते हैं

स्रोत कोड (Dockerfile) और README here

FROM java:jre-alpine 

MAINTAINER arcseldon <[email protected]> 

ENV ES_VERSION=2.3.5 \ 
    KIBANA_VERSION=4.5.3 

RUN apk add --quiet --no-progress --no-cache nodejs \ 
    && adduser -D elasticsearch 

USER elasticsearch 

WORKDIR /home/elasticsearch 

RUN wget -q -O - http://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/${ES_VERSION}/elasticsearch-${ES_VERSION}.tar.gz \ 
| tar -zx \ 
&& mv elasticsearch-${ES_VERSION} elasticsearch \ 
&& wget -q -O - http://download.elastic.co/kibana/kibana/kibana-${KIBANA_VERSION}-linux-x64.tar.gz \ 
| tar -zx \ 
&& mv kibana-${KIBANA_VERSION}-linux-x64 kibana \ 
&& rm -f kibana/node/bin/node kibana/node/bin/npm \ 
&& ln -s $(which node) kibana/node/bin/node \ 
&& ln -s $(which npm) kibana/node/bin/npm \ 
&& ./elasticsearch/bin/plugin install license \ 
&& ./elasticsearch/bin/plugin install marvel-agent \ 
&& ./kibana/bin/kibana plugin --install elasticsearch/marvel/latest \ 
&& ./kibana/bin/kibana plugin --install elastic/sense 

CMD elasticsearch/bin/elasticsearch --es.logger.level=OFF --network.host=0.0.0.0 & kibana/bin/kibana -Q 

EXPOSE 9200 5601 

प्राप्त करें:

docker pull arcseldon/elasticsearch-kibana-marvel-sense 

आप हब पर भंडार पर जा सकते हैं। docker.com here

उपयोग:

docker run -d -p 9200:9200 -p 5601:5601 arcseldon/elasticsearch-kibana-marvel-sense 

आप http://localhost:9200 के साथ Elasticsearch से कनेक्ट कर सकते हैं और इसके किबाना फ्रंट-एंड http://localhost:5601 के साथ कनेक्ट कर सकते हैं।

आप http://localhost:5601/app/marvel साथ चमत्कार से कनेक्ट और साथ http://localhost:5601/app/sense

आशा इस दूसरों में मदद करता है और कुछ समय की बचत होती है समझ सकते हैं!

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