Подтвердить что ты не робот

Как расширить существующее изображение докеров?

Я использую официальное изображение Dockinger для elasticsearch вместо того, чтобы настраивать свой собственный пример экстренного поиска. И это отлично работает, вплоть до того момента, когда я хотел его продлить. Я хотел установить marvel в этот экземпляр ElasticSearch, чтобы получить дополнительную информацию.

Теперь dockerfile/elasticsearch автоматически запускает ElasticSearch и установка команды /bin/bash не работает, не прикрепляется к контейнеру или не пытается получить доступ к ней через SSH, а также не устанавливает ssh-daemon с apt-get install -y openssh-server.

В этом конкретном случае я мог просто войти в файловую систему контейнера и выполнить opt/elasticsearch/bint/plugin -i elasticsearch/marvel/latest, и все сработало.

Но как я могу установить дополнительную службу, которая должна быть установлена ​​с помощью apt-get, когда я не могу иметь терминал внутри запущенного контейнера?

4b9b3361

Ответ 1

Просто расширьте его, используя файл Docker, который начинается с

FROM dockerfile/elasticsearch

и установите чудо или ssh-сервер или что вам нужно. Затем завершите правильную команду для запуска ваших сервисов. Вы можете использовать супервизор для запуска мультиплексных сервисов, см. Запуск службы автоматически в контейнере докеров для получения дополнительной информации об этом.

Ответ 2

Если вы не возражаете против использования docker-compose, то, что я обычно делаю, это добавить первый раздел для базового изображения, которое вы планируете повторно использовать, а затем использовать это изображение в качестве базы в остальной части Dockerfiles сервисов, что-то вроде:

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

    collector:
         build: ./images/collector

Затем в файле images/collector/Dockerfile, и поскольку мой проект называется webtrack, я бы напечатал

FROM webtrack_base
...

И теперь это сделано!

Ответ 3

Обновление августа 2016 года

Найдя очень мало текущей информации о том, как это сделать, с последними версиями ElasticSearch (например, 2.3.5), плагинами Kibana (4.5.3) и Marvel и Sense, я решил сделать более крутой путь и написать свой собственный изображение.

Пожалуйста, найдите исходный код (Dockerfile) и README здесь

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

Вы можете посетить репозиторий на hub.docker.com здесь

Использование:

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

Вы можете подключиться к Elasticsearch с http://localhost:9200 и его интерфейсом Kibana с http://localhost:5601.

Вы можете подключиться к Marvel с помощью http://localhost:5601/app/marvel и Sense с < а5 >

Надеюсь, что это поможет другим и сэкономит время!