-
拉取镜像
docker pull docker.io/library/elasticsearch:7.16.1
-
创建并启动容器 编写docker-compose.yml
version: '3.3' services: elasticsearch: image: elasticsearch:7.16.1 #镜像 container_name: elasticsearch #定义容器名称 restart: always #开机启动,失败也会一直重启 environment: - "cluster.name=elasticsearch" #设置集群名称为elasticsearch - "discovery.type=single-node" #以单一节点模式启动 - "ES_JAVA_OPTS=-Xms128m -Xmx256m" #设置使用jvm内存大小 volumes: - /data/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml - /data/elasticsearch/data:/usr/share/elasticsearch/data - /data/elasticsearch/plugins:/usr/share/elasticsearch/plugins - /data/elasticsearch/logs:/usr/share/elasticsearch/logs ports: - '9200:9200' - '9300:9300'
-
将配置文件从容器中复制到宿主机
docker cp es:/usr/share/elasticsearch/config/elasticsearch.yml ./elasticsearch.yml
-
修改yml文件
cluster.name: "docker-cluster" network.host: 0.0.0.0 # 配置远程访问 http.host: 0.0.0.0 # 因为elasticsearch与elasticsearch-head工具是前后端分离项目,所以需要处理跨域问题 http.cors.enabled: true http.cors.allow-origin: "*" # 开启账户密码验证 http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type xpack.security.enabled: true xpack.security.transport.ssl.enabled: true
-
将修改后的文件覆盖到容器内
docker cp ./elasticsearch.yml es:/usr/share/elasticsearch/config/elasticsearch.yml
-
重启elasticsearch
docker restart es
-
设置用户名密码
docker exec -it es bash # 设置elastic,apm_system,kibana,kibana_system,logstash_system,beats_system,remote_monitoring_user 这些用户的密码 bin/elasticsearch-setup-passwords interactive
-
如果启动报错(查看日志docker logs -f 容器id,发现异常日志)
Error opening log file ‘logs/gc.log’: Permission denied
-
执行如下命令(赋予权限)
chmod 777 /data/elasticsearch/plugins/ chmod 777 /data/elasticsearch/data/ chmod 777 /data/elasticsearch/logs/
-
以上启动成功