web-dev-qa-db-ja.com

公式のdocker elasticsearchコンテナーの使用方法

次のDockerfileがあります。

FROM docker.elastic.co/elasticsearch/elasticsearch:5.4.0
RUN elasticsearch
EXPOSE 80

3行目に到達することはないと思います。

ローカルマシンからdockercontainerにアクセスしようとすると:172.17.0.2:9300

何も得られません、何が欠けていますか?ローカルホストマシンからelasticsearchにアクセスしたい。

8
CommonSenseCode

次の構成でdocker-composeを使用することをお勧めします(多くのことがはるかに簡単になります)。

構成(開発用)

構成は3つのサービスを開始します。エラスティック自体と、kibanaやheadプラグインなどの開発用の追加ユーティリティ(これらが必要ない場合は省略できます)。

同じディレクトリに3つのファイルが必要です。

  • docker-compose.yml
  • elasticsearch.yml
  • kibana.yml

次の内容で:

docker-compose.yml

version: '2'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:5.4.0
    container_name: elasticsearch_540
    environment:
      - http.Host=0.0.0.0
      - transport.Host=0.0.0.0
      - "ES_Java_OPTS=-Xms1g -Xmx1g"
    volumes:
      - esdata:/usr/share/elasticsearch/data
      - ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    ports:
      - 9200:9200
      - 9300:9300
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65536
        hard: 65536
    mem_limit: 2g
    cap_add:
      - IPC_LOCK
  kibana:
    image: docker.elastic.co/kibana/kibana:5.4.0
    container_name: kibana_540
    environment:
      - SERVER_Host=0.0.0.0
    volumes:
      - ./kibana.yml:/usr/share/kibana/config/kibana.yml
    ports:
      - 5601:5601
  headPlugin:
    image: mobz/elasticsearch-head:5
    container_name: head_540
    ports:
      - 9100:9100

volumes:
  esdata:
    driver: local

elasticsearch.yml

cluster.name: "chimeo-docker-cluster"
node.name: "chimeo-docker-single-node"
network.Host: 0.0.0.0

http.cors.enabled: true
http.cors.allow-Origin: "*"
http.cors.allow-headers: "Authorization"

kibana.yml

server.name: kibana
server.Host: "0"
elasticsearch.url: http://elasticsearch:9200
elasticsearch.username: elastic
elasticsearch.password: changeme
xpack.monitoring.ui.container.elasticsearch.enabled: true

ランニング

上記の3つのファイルを同じディレクトリに配置し、そのディレクトリを現在の作業ディレクトリとして設定します(Sudoが必要な場合があります。docker-composeの設定方法によって異なります)。

docker-compose up

起動し、3つの異なるサービスからのログが表示されます:elasticsearch_540kibana_540およびhead_540

最初の起動後、http 92で、tcpで93でエラスティッククラスターを使用できるようになります。クラスターが起動した場合、次のcurlで検証します。

curl -u elastic:changeme http://localhost:9200/_cat/health 

次に、いずれかのkibana(資格情報Elastic/changemeを使用)を使用してクラスターを表示および再生できます。

http://localhost:5601/

またはヘッドプラグイン:

http://localhost:9100/?base_uri=http://localhost:9200&auth_user=elastic&auth_password=changeme
30
slawek

仮想メモリが不十分なため、コンテナは自動的に終了します。デフォルトでは、弾力性のある検索コンテナを実行するには、メモリは262144ただし、このコマンドを実行する場合はsysctl vm.max_map_countと65530前後になることがわかります。このコマンドを使用して、仮想メモリカウントを増やしてくださいsysctl -w vm.max_map_count=262144そしてコンテナを再度実行しますdocker run IMAGE IDその後、コンテナを実行して、ポート9200または9300でエラスティック検索にアクセスできるはずです。

編集:このリンクを確認してください https://www.elastic.co/guide/en/elasticsearch/reference/5.0/vm-max-map-count.html#vm-max-map-count