参考的官方文档链接:Install Elasticsearch with Docker | Elasticsearch Guide [7.5] | Elastic
docker pull elasticsearch:7.14.1
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 无法启动!
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 中配置,用于替换掉容器中的相应文件。
下载镜像
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 连接上,否则会产生跨域问题,无法连接。
下载镜像
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 的界面。