首先拉取镜像:
sudo docker pull elasticsearch:8.6.2
创建docker容器挂在的目录:
mkdir -p /home/elasticsearch/config
mkdir -p /home/elasticsearch/data
mkdir -p /home/elasticsearch/plugins
初始化配置文件
echo "http.host: 0.0.0.0" >> /home/elasticsearch/config/elasticsearch.yml
echo "xpack.security.enabled: false" >> /home/elasticsearch/config/elasticsearch.yml
因为我安装的是8版本的es,只执行第一个,不执行下面这个语句,启动时会报如下的错误。
echo "xpack.security.enabled: false" >> /home/elasticsearch/config/elasticsearch.yml
查看编辑后的配置文件,如下
执行以下命令运行容器
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms84m -Xmx512m" -v /opt/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /opt/elasticsearch/data:/usr/share/elasticsearch/data -v /opt/elasticsearch/plugins:/usr/share/elasticsearch/plugins -d elasticsearch:8.6.2
运行后运行docker ps 发现没有运行中的es容器,说明启动失败。
使用docker logs elasticsearch 查询容器启动日志,发现如下报错,仔细查看后得知是容器内目录
/usr/share/elasticsearch/data目录没有写权限,而这个目录我们进行了外部的挂载。因此可以推断出是容器外目录/home/elasticsearch/data没有写权限。
因此解决这个问题需要给/home/elasticsearch整个目录添加组外写权限。执行以下命令。
chmod -R 777 /home/elasticsearch/
执行完成后,再执行
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms84m -Xmx512m" -v /opt/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /opt/elasticsearch/data:/usr/share/elasticsearch/data -v /opt/elasticsearch/plugins:/usr/share/elasticsearch/plugins -d elasticsearch:8.6.2
之后进行验证,看到如下信息,代表es已经安装成功
curl 127.0.0.1:9200