如何扩展现有的docker镜像?

时间:2014-04-07 07:15:07

标签: elasticsearch docker

我使用the official elasticsearch Docker image而不是设置我自己的弹性搜索实例。这很有效,直到我想扩展它。我想在{ElasticSearch'实例中安装marvel以获取更多信息。

现在,dockerfile / elasticsearch会自动运行ElasticSearch并将命令设置为/bin/bash不起作用,既不会附加到容器上,也不会尝试通过SSH访问它,也不会安装带{{1的ssh-daemon }}。

在这种特殊情况下,我可以进入容器的文件系统并执行apt-get install -y openssh-server,一切正常。

但是,当我无法在正在运行的容器中设置终端时,如何安装需要与opt/elasticsearch/bint/plugin -i elasticsearch/marvel/latest一起安装的其他服务?

3 个答案:

答案 0 :(得分:33)

只需使用以

开头的Dockerfile扩展它
FROM dockerfile/elasticsearch

并安装marvel或ssh-server或任何你需要的东西。然后,以正确的命令结束以启动您的服务。您可以使用主管启动多项服务,有关详细信息,请参阅Run a service automatically in a docker container

答案 1 :(得分:2)

如果您不介意使用 docker-compose ,我通常会为您计划重复使用的基本图像添加第一部分,然后使用该图像作为基础在其余的服务' Dockerfiles ,类似于:

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

    collector:
         build: ./images/collector

然后,在images / collector / Dockerfile中,由于我的项目名为 webtrack ,我输入

FROM webtrack_base
...

现在已经完成了!

答案 2 :(得分:1)

2016年8月更新

关于如何使用最新版本的ElasticSearch(例如2.3.5),Kibana(4.5.3)和Marvel& amp;感觉插件,我选择采用更陡峭的路径并编写自己的图像。

请找到源代码(Dockerfile)和README here

FROM java:jre-alpine

MAINTAINER arcseldon <arcseldon@gmail.com>

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

您可以访问hub.docker.com here

上的存储库

用法:

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

您可以使用http://localhost:9200及其Kibana前端与http://localhost:5601连接到Elasticsearch。

您可以使用http://localhost:5601/app/marvel和Sense http://localhost:5601/app/sense

连接到Marvel

希望这有助于他人并节省一些时间!