一、安装ElasticSearch
(1)搜索ElasticSearch
docker search elasticsearch
(2)下载镜像
docker pull elasticsearch:7.12.0
(3)创建elasticsearch及其相关目录
mkdir /usr/local/docker/elasticsearch
mkdir /usr/local/docker/elasticsearch/data
mkdir /usr/local/docker/elasticsearch/logs
mkdir /usr/local/docker/elasticsearch/plugins
(4)启动ElasticSearch
docker run \
--name elasticsearch \
-e "ES_JAVA_OPTS=-Xms1024m -Xmx1024m" \
-e "discovery.type=single-node" \
-v /usr/local/docker/elasticsearch/data:/usr/share/elasticsearch/data \
-v /usr/local/docker/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
--privileged \
-p 9200:9200 \
-p 9300:9300 \
-d elasticsearch:7.12.0
命令说明:
- -e "cluster.name=es-docker-cluster":设置集群名称
- -e "http.host=0.0.0.0":监听的地址,可以外网访问
- -e "ES_JAVA_OPTS=-Xms512m -Xmx512m":内存大小
- -e "discovery.type=single-node":非集群模式
- -v /usr/local/docker/elasticsearch/data:/usr/share/elasticsearch/data:挂载逻辑卷,绑定elasticsearch的数据目录
- -v /usr/local/docker/elasticsearch/logs:/usr/share/elasticsearch/logs:挂载逻辑卷,绑定elasticsearch的日志目录
- -v /usr/local/docker/elasticsearch/plugins:/usr/share/elasticsearch/plugins:挂载逻辑卷,绑定elasticsearch的插件目录
- --privileged:授予逻辑卷访问权
- --network itmentu-net :加入一个名为itmentu-net的网络中
- -p 9200:9200:端口映射配置
启动时可能会发现服务没有启动成功
此时查看日志
docker logs
{
"type": "server", "timestamp": "2024-03-25T06:59:28,045Z", "level": "ERROR", "component": "o.e.b.ElasticsearchUncaughtExceptionHandler", "cluster.name": "docker-cluster", "node.name": "24ac2aec2675", "message": "uncaught exception in thread [main]",
"stacktrace": ["org.elasticsearch.bootstrap.StartupException: ElasticsearchException[failed to bind service]; nested: AccessDeniedException[/usr/share/elasticsearch/data/nodes];",
"at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:163) ~[elasticsearch-7.12.0.jar:7.12.0]",
"at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150) ~[elasticsearch-7.12.0.jar:7.12.0]",
"at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:75) ~[elasticsearch-7.12.0.jar:7.12.0]",
"at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:116) ~[elasticsearch-cli-7.12.0.jar:7.12.0]",
"at org.elasticsearch.cli.Command.main(Command.java:79) ~[elasticsearch-cli-7.12.0.jar:7.12.0]",
"at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:115) ~[elasticsearch-7.12.0.jar:7.12.0]",
"at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:81) ~[elasticsearch-7.12.0.jar:7.12.0]",
"Caused by: org.elasticsearch.ElasticsearchException: failed to bind service",
"at org.elasticsearch.node.Node.<init>(Node.java:744) ~[elasticsearch-7.12.0.jar:7.12.0]",
uncaught exception in thread [main]
"at org.elasticsearch.node.Node.<init>(Node.java:278) ~[elasticsearch-7.12.0.jar:7.12.0]"