2014-04-07 20 views
25

Tôi đang sử dụng the official elasticsearch Docker image thay vì thiết lập cá thể tìm kiếm đàn hồi của riêng mình. Và nó hoạt động rất tốt, đến mức tôi muốn mở rộng nó. Tôi muốn cài đặt marvel vào cá thể ElasticSearch đó để có thêm thông tin.Làm cách nào để mở rộng hình ảnh docker hiện có?

Hiện tại dockerfile/elasticsearch tự động chạy ElasticSearch và đặt lệnh thành /bin/bash không hoạt động, không đính kèm vào thùng chứa hoặc cố gắng truy cập qua SSH hoặc cài đặt ssh-daemon với apt-get install -y openssh-server.

Trong trường hợp cụ thể này, tôi chỉ có thể đi vào hệ thống tệp của vùng chứa và thực hiện opt/elasticsearch/bint/plugin -i elasticsearch/marvel/latest và mọi thứ hoạt động.

Nhưng làm cách nào tôi có thể cài đặt dịch vụ bổ sung cần được cài đặt với apt-get khi tôi không thể có thiết bị đầu cuối bên trong vùng chứa đang hoạt động?

+0

[url elasticsearch] (https://hub.docker.com/r/_/elasticsearch/) đã thay đổi thành [https://hub.docker.com/r/_/elasticsearch/](https:/ /hub.docker.com/r/_/elasticsearch/) – luckydonald

Trả lời

29

Đơn giản chỉ cần mở rộng nó sử dụng một Dockerfile bắt đầu bằng

FROM dockerfile/elasticsearch 

và cài đặt ngạc nhiên hoặc ssh-server hoặc bất cứ điều gì bạn cần. Sau đó, kết thúc bằng lệnh đúng để bắt đầu dịch vụ của bạn. Bạn có thể sử dụng người giám sát để bắt đầu các dịch vụ đa dạng, xem Run a service automatically in a docker container để biết thêm thông tin về điều đó.

+0

Có cách nào để mở rộng Dockerfile, trái ngược với một hình ảnh không? Giả sử tôi có một Dockerfile cho một máy chủ email. Nó lưu trữ các tập tin theo nhiều cách khác nhau (Amazon S3, CEPH, vv) vì vậy tôi cần một thư viện cho từng dịch vụ đó. Tôi muốn có một Dockerfile cơ sở cho máy chủ và sau đó một Dockerfile cho mỗi dịch vụ được sử dụng để lưu trữ các tập tin. Tất cả điều này mà không cần phải lo lắng về hình ảnh trung gian. – conradkdotcom

+1

không. Trong trường hợp này, một chiến thuật có thể là một Dockerfile với nhiều chức năng chia sẻ như bạn có thể đặt vào nó, và một loạt các Dockerfile nhỏ mở rộng trên hình ảnh mới được xây dựng để cài đặt thư viện của bạn cho dịch vụ cụ thể – qkrijger

+0

@qkrijger - Cảm ơn bạn đã bắt đầu con đường bên phải - Tôi đã cung cấp một Dockerfile hoàn toàn làm việc trong câu trả lời gần đây của tôi. – arcseldon

2

Nếu bạn không nhớ sử dụng docker-compose, điều tôi thường làm là thêm phần đầu tiên cho hình ảnh cơ sở bạn định sử dụng lại, sau đó sử dụng hình ảnh đó làm cơ sở trong phần còn lại của dịch vụ 'Dockerfiles, một cái gì đó dọc theo dòng:

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

    collector: 
     build: ./images/collector 

Sau đó, trong images/thu/Dockerfile, và kể từ khi dự án của tôi được gọi là webtrack, tôi muốn gõ

FROM webtrack_base 
... 

Và bây giờ đã xong!

0

Cập nhật tháng 8 năm 2016

Sau khi tìm thấy rất ít thông tin hiện hành về làm thế nào để làm điều này với các phiên bản mới nhất của ElasticSearch (2.3.5 chẳng hạn), Kibana (4.5.3) và Marvel & plugins Sense, tôi chọn tham gia vào con đường dốc hơn và viết hình ảnh của riêng tôi.

Hãy tìm mã nguồn (Dockerfile) và 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 

Nếu bạn chỉ muốn hình ảnh được xây dựng trước rồi hãy làm:

docker pull arcseldon/elasticsearch-kibana-marvel-sense 

Bạn có thể truy cập kho lưu trữ trên hub. docker.com here

Cách sử dụng:

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

Bạn có thể kết nối với Elasticsearch với http://localhost:9200 và mặt trước Kibana của nó với http://localhost:5601.

Bạn có thể kết nối với Marvel với http://localhost:5601/app/marvel và ý nghĩa với http://localhost:5601/app/sense

Hy vọng điều này giúp những người khác và tiết kiệm thời gian!

Các vấn đề liên quan