如何扩展现有的docker图像?

我正在使用正式的elasticsearch Docker镜像,而不是设置自己的弹性search实例。 而且这很好,直到我想扩展它。 我想在这个ElasticSearch实例中安装奇迹以获取更多信息。

现在,dockerfile / elasticsearch会自动运行ElasticSearch并将命令设置为/bin/bash不起作用,也不会连接到容器或尝试通过SSH访问它,也不会使用apt-get install -y openssh-server安装ssh-daemon 。

在这种情况下,我可以进入容器的文件系统并执行opt/elasticsearch/bint/plugin -i elasticsearch/marvel/latest并且一切正常。

但是我怎么能安装一个额外的服务,需要与apt-get安装,当我不能有一个terminal内运行容器?

只需使用Dockerfile扩展它即可

 FROM dockerfile/elasticsearch 

并安装奇迹或SSH服务器或任何你需要的。 然后,以正确的命令结束以开始您的服务。 您可以使用主pipe启动多个服务,请参阅在Docker容器中自动运行服务以获取更多相关信息。

如果你不介意使用docker-compose ,我通常做的是为你计划重用的基础镜像添加第一部分,然后将这个镜像用作其余服务Dockerfiles的基础 ,行:

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

然后,在图像/collections夹/ Dockerfile中,因为我的项目被称为webtrack ,我会input

 FROM webtrack_base ... 

现在完成了!

2016年8月更新

在最新版本的ElasticSearch(例如2.3.5),Kibana(4.5.3)和Marvel&Sense插件的最新版本中,我发现很less有关于如何做到这一点的最新信息,我select走更陡峭的path并写下自己的图像。

请在这里find源代码(Dockerfile)和自述文件

 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 

如果你只是想要预build的图像,那么请做:

 docker pull arcseldon/elasticsearch-kibana-marvel-sense 

您可以在这里访问hub.docker.com上的存储库

用法:

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

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

您可以使用http:// localhost:5601 / app / marvel连接到Marvel,使用http:// localhost:5601 / app / sense连接到Marvel

希望这可以帮助别人,节省一些时间!