web-dev-qa-db-ja.com

既存のdockerイメージを拡張する方法は?

独自のエラスティック検索インスタンスを設定する代わりに、 公式のelasticsearch Dockerイメージ を使用しています。そして、それを拡張したかった時点まで、それはうまく機能します。詳細情報を取得するために、ElasticSearchインスタンスに marvel をインストールしたかった。

現在、dockerfile/elasticsearchはElasticSearchを自動的に実行し、コマンドを/bin/bashに設定しても機能しません。コンテナにアタッチしたり、SSH経由でコンテナにアクセスしようとしたり、apt-get install -y openssh-serverでssh-daemonをインストールしたりすることもできません。

この特定のケースでは、コンテナのファイルシステムに移動してopt/elasticsearch/bint/plugin -i elasticsearch/marvel/latestを実行するだけで、すべてが機能しました。

しかし、実行中のコンテナ内に端末を置くことができないときに、apt-getでインストールする必要がある追加のサービスをどのようにインストールできますか?

32
peter

で始まるDockerfileを使用して単純に拡張します

FROM dockerfile/elasticsearch

そして、marvelまたはssh-serverまたは必要なものをインストールします。次に、正しいコマンドで終了してサービスを開始します。スーパーバイザーを使用して複数のサービスを開始できます。詳細については、 Dockerコンテナーでサービスを自動的に実行する を参照してください。

33
qkrijger

docker-composeの使用を気にしない場合は、通常、再利用するベースイメージの最初のセクションを追加し、そのイメージを残りのベースのベースとして使用しますサービス 'Dockerfiles、次の行に沿った何か:

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

    collector:
         build: ./images/collector

次に、images/collector/Dockerfileで、プロジェクトがwebtrackと呼ばれるので、次のように入力します

FROM webtrack_base
...

これで完了です!

2
mrArias

2016年8月更新

ElasticSearchの最新バージョン(2.3.5など)、Kibana(4.5.3)、Marvel&Senseプラグインでこれを行う方法に関する最新情報がほとんどないため、急勾配のパスを使用して独自のイメージを作成することにしました。

ソースコード(Dockerfile)と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

ビルド済みのイメージだけが必要な場合は、次を実行してください。

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:92 でElasticsearchに接続し、 http:// localhost:5601 でそのKibanaフロントエンドに接続できます。

http:// localhost:5601/app/marvel でMarvelに接続し、 http:// localhost:5601/app/sense でSenseに接続できます

これが他の人を助け、時間を節約することを願っています!

1
arcseldon