參考的官方文檔連結:Install Elasticsearch with Docker | Elasticsearch Guide [7.5] | Elastic
下載下傳鏡像
docker pull elasticsearch:7.14.1
編寫docker-compose.yml
version: '3'
services:
es01:
image: elasticsearch:7.14.1
environment:
- node.name=es01
- cluster.name=es-cluster-ai66
- cluster.initial_master_nodes=es01
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- /data/docker-compose/elastic/es01/data:/usr/share/elasticsearch/data
- /data/docker-compose/elastic/es01/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
ports:
- 9201:9200
networks:
- elastic
networks:
elastic:
driver: bridge
叢集配置時需要修改和增加的environment配置
- discovery.seed_hosts=es02,es03
- cluster.initial_master_nodes=es01,es02,es03
elasticsearch.yml 是從容器中拷出來的,放到了主控端的 /data/docker-compose/elastic/es01/config 目錄,在裡面增加了點内容,然後映射到容器中
cluster.name: "docker-cluster"
network.host: 0.0.0.0
http.cors.enabled: true
http.cors.allow-origin: "*"
cors 相關的兩個參數,是為了解決跨域問題。比如 elasticsearch-head 要連接配接 elasticsearch,需要配置這兩個參數,否則會産生跨域問題!
資料檔案存放目錄 /usr/share/elasticsearch/data 需要映射到主控端上,否則容器一旦删除,es 的資料就丢失了!
注意點:主控端上的資料儲存目錄 /data/docker-compose/elastic/es01/data 必須賦予 777 權限,否則 elasticsearch 無法啟動!
啟動elasticsearch
docker-compose up -d --build es01
啟動成功之後通過 docker-compose logs es01 檢視日志,裡面可以看到此 elasticsearch 程序的一些基本資訊。
{}
- "type":"server",
- "timestamp":"2021-09-09T07:49:29,263Z",
- "level":"INFO",
- "component":"o.e.n.Node",
- "cluster.name":"es-cluster-ai66",
- "node.name":"es01",
- "message":"JVM arguments [-Xshare:auto, -Des.networkaddress.cache.ttl=60, -Des.networkaddress.cache.negative.ttl=10, -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djna.nosys=true, -XX:-OmitStackTraceInFastThrow, -XX:+ShowCodeDetailsInExceptionMessages, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true, -Dio.netty.recycler.maxCapacityPerThread=0, -Dio.netty.allocator.numDirectArenas=0, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true, -Djava.locale.providers=SPI,COMPAT, --add-opens=java.base/java.io=ALL-UNNAMED, -XX:+UseG1GC, -Djava.io.tmpdir=/tmp/elasticsearch-3328155958165225604, -XX:+HeapDumpOnOutOfMemoryError, -XX:HeapDumpPath=data, -XX:ErrorFile=logs/hs_err_pid%p.log, -Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,pid,tags:filecount=32,filesize=64m, -Des.cgroups.hierarchy.override=/, -Xms512m, -Xmx512m, -XX:MaxDirectMemorySize=268435456, -XX:G1HeapRegionSize=4m, -XX:InitiatingHeapOccupancyPercent=30, -XX:G1ReservePercent=15, -Des.path.home=/usr/share/elasticsearch, -Des.path.conf=/usr/share/elasticsearch/config, -Des.distribution.flavor=default, -Des.distribution.type=docker, -Des.bundled_jdk=true]"
在容器中,elasticsearch 相關的檔案都在 /usr/share/elasticsearch 目錄中。要修改配置或者添加檔案,都可以在将檔案放在主控端上,然後在 volumn 中配置,用于替換掉容器中的相應檔案。
部署elasticsearch-head
下載下傳鏡像
mobz/elasticsearch-head:5-alpine
編寫docker-compose.yml
eshead:
image: mobz/elasticsearch-head:5-alpine
ports:
- 9100:9100
之後通路 9100 端口打開 elasticsearch-head 頁面,在裡面輸入 elasticsearch 位址,然後連接配接,就可以看到 elasticsearch 的各種資訊了。
注意:elasticsearch 的配置檔案中,必須增加如下兩個參數,才能被 elasticsearch-head 連接配接上,否則會産生跨域問題,無法連接配接。
- http.cors.enabled: true
- http.cors.allow-origin: "*"
部署kibana
下載下傳鏡像
docker pull kibana:7.14.1
編寫docker-compose.yml
kibana:
image: kibana:7.14.1
ports:
- 5601:5601
environment:
SERVER_NAME: 10.68.4.66
ELASTICSEARCH_HOSTS: '["http://10.68.4.66:9201"]'
啟動kibana
docker-compose up -d --build es01
之後就可以通過 http://xx.xx.xx.xx:5601 來通路了。
進入首頁後,點選左側導航欄的 Management -> Dev Tools,進入操作 elasticsearch 的界面。