以下是优化后的步骤描述:
一、准备工作与导入 Elasticsearch 镜像
- 创建文件夹并传输安装包:使用
mkdir es
命令创建名为“es”的文件夹。通过文件传输工具将 Elasticsearch 镜像安装包传输至服务器的“es”文件夹中。然后使用docker load -i elasticsearch.tar
命令将 Elasticsearch 镜像导入到 Docker 环境。
二、创建自定义网络
- 创建网络:使用
docker network create esnet
命令创建自定义网络,以便连接到同一网络的其他服务,例如 Kibana。
三、首次尝试启动 Elasticsearch 容器
- 首次启动尝试:执行:
docker run -d -e ES_JAVA_POTS="-Xms512m -Xmx512m" -p 9200:9200 -p 9300:9300 --name search elasticsearch:7.6.2
命令尝试启动 Elasticsearch 容器。如果启动成功,可跳过3.1步骤。
四、处理启动问题及再次尝试
3.1. 若首次启动失败,删除未成功启动的镜像,然后执行:
docker run -d -e ES_JAVA_POTS="-Xms256m -Xmx256m" -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" --name search elasticsearch:7.6.2
再次尝试启动。
五、检查容器状态及配置调整
- 检查启动状态:使用
docker ps
命令查看 Elasticsearch 是否启动。
同时添加命令:
docker cp search:/usr/share/elasticsearch/config/elasticsearch.yml /data/es/
将容器内的 Elasticsearch 配置文件复制到指定目录进行临时修改,添加:
cluster.initial_master_nodes: ["docker-cluster"]
后再复制回容器内,即执行
docker cp elasticsearch.yml search:/usr/share/elasticsearch/config/elasticsearch.yml
。
六、调整系统参数
- 设置系统参数:使用
sysctl -w vm.max_map_count=262144
命令临时调整系统参数。 - 查看参数结果:使用
sysctl -a|grep vm.max_map_count
命令查看结果,确认vm.max_map_count = 262144
。 - 永久修改参数:使用
vim /etc/sysctl.conf
命令打开系统参数配置文件,按“i”进入编辑模式,在最后一行加入vm.max_map_count=262144
进行永久修改,然后使用
docker restart search
命令重启 Elasticsearch 容器。
七、备份容器数据及停止删除容器
- 备份数据:使用
docker ps
命令查看 Elasticsearch 容器 ID,复制容器 ID 后执行一系列拷贝命令,如docker cp d1ed0bc22d92:/usr/share/elasticsearch/config/ /data/es/
等,分别备份容器的配置、数据、日志和插件目录到指定目录。 - 停止并删除容器:使用
docker stop search
命令停止容器,然后使用docker rm search
命令删除容器。
八、重新启动 Elasticsearch 容器并配置验证
- 重启容器:执行使用:
docker run -d -e ES_JAVA_POTS="-Xms8192m -Xmx10240m" -e "discovery.type=single-node" -v /data/es/config/:/usr/share/elasticsearch/config/ -v /data/es/data/:/usr/share/elasticsearch/data/ -v /data/es/logs/:/usr/share/elasticsearch/logs/ -v /data/es/plugins/:/usr/share/elasticsearch/plugins/ --network=esnet -e TZ='Asia/Shanghai' -e LANG="en_US.UTF-8" --restart=always -p 9200:9200 -p 9300:9300 --name elasticsearch elasticsearch:7.6.2
命令重新启动 Elasticsearch 容器,并使用docker ps
命令检查容器是否启动。 - 开启验证并重启:在配置文件中开启 x-pack 验证,修改
config
目录下的elasticsearch.yml
文件,添加如下内容:
xpack.security.enabled: true
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.enabled: true
然后重启 Elasticsearch。 - 进入容器执行密码设置:执行
docker exec -it d8ba5d64ad38 /bin/bash
先进入到 ES 容器,再进入bin
目录,执行elasticsearch-setup-passwords interactive
命令为四个用户(elastic、kibana、logstash_system、beats_system)设置密码。