elasticsearch - oss - ¿Cómo extender una imagen de ventana acoplable existente?
elasticsearch docker-compose (3)
Estoy usando la imagen oficial de Elasearch Docker en lugar de configurar mi propia instancia de búsqueda elástica. Y eso funciona muy bien, hasta el punto en que quería extenderlo. Quería instalar Marvel en esa instancia de ElasticSearch para obtener más información.
Ahora dockerfile / elasticsearch ejecuta automáticamente ElasticSearch y configurar el comando en /bin/bash
no funciona, ni se conecta al contenedor ni intenta acceder a él a través de SSH, ni instala ssh-daemon con apt-get install -y openssh-server
.
En este caso particular, podría ingresar al sistema de archivos del contenedor y ejecutar opt/elasticsearch/bint/plugin -i elasticsearch/marvel/latest
y todo funcionó.
Pero, ¿cómo podría instalar un servicio adicional que necesita instalarse con apt-get
cuando no puedo tener un terminal dentro del contenedor en funcionamiento?
Si no te importa usar Docker-Componer , lo que suelo hacer es agregar una primera sección para la imagen base que planeas reutilizar, y luego usar esa imagen como base en el resto de los archivos Docker de los servicios, algo a lo largo del líneas de:
---
version: ''2''
services:
base:
build: ./images/base
collector:
build: ./images/collector
Luego, en images / collector / Dockerfile, y dado que mi proyecto se llama webtrack , escribiría
FROM webtrack_base
...
¡Y ahora está hecho!
Simplemente extiéndalo usando un Dockerfile que comience con
FROM dockerfile/elasticsearch
e instala Marvel o ssh-server o lo que sea que necesites. Luego, termine con el comando correcto para comenzar sus servicios. Puede usar el supervisor para iniciar servicios múltiples, consulte Ejecutar un servicio automáticamente en un contenedor acoplable para obtener más información al respecto.
Actualización de agosto de 2016
Habiendo encontrado muy poca información actual sobre cómo hacer esto con las últimas versiones de ElasticSearch (2.3.5 por ejemplo), Kibana (4.5.3) y los complementos de Marvel & Sense, opté por tomar el camino más pronunciado y escribir mi propia imagen.
Encuentre el código fuente (Dockerfile) y 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
Si solo desea la imagen preconstruida, haga lo siguiente:
docker pull arcseldon/elasticsearch-kibana-marvel-sense
Puede visitar el repositorio en hub.docker.com here
Uso:
docker run -d -p 9200:9200 -p 5601:5601 arcseldon/elasticsearch-kibana-marvel-sense
Puede conectarse a Elasticsearch con http: // localhost: 9200 y su front-end Kibana con http: // localhost: 5601 .
Puede conectarse a Marvel con http://localhost:5601/app/marvel y Sense con http://localhost:5601/app/sense
Espero que esto ayude a otros y ahorre tiempo.