Docker 安装 ElasticSearch 及失败解决方法[Ubuntu 20.04]

1. 下载 ElasticSearch

最开始使用docker search命令搜索后,就直接使用docker pull命令拉取镜像,但没想到拉取失败,后来到官网看了看,原来没有标签为lasted的镜像,所以,正确的拉取方法应该是: docker pull elasticsearch:tag

拉取ElasticSearch

2. 运行 ElasticSearch

2.1 失败的启动

事先说明一下,ElasticSearch启动时默认使用2GB的内存,为了防止内存占用过大,一般都限制了它的运行内存,如下命令设置为256MB。

然后我很自信满满的运行了下面的命令,其中-d表示后台运行,-p 9200:9200是进行端口映射,--name ES01是指定容器的名称,7.14.0是版本号。9200端口用于Web通信,9300用于分布式下各节点间的通信。

docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 
--name ES01 elasticsearch:7.14.0

错误的运行

然后使用docker ps -a查询了一下运行情况,确实在运行,但是使用浏览器访问http://localhost:9200却一直失败,重新查询运行情况,居然退出了。

容器退出了

2.2 查找解决方法

之后使用docker logs 容器ID或容器名称查询容器启动的日志,一行行查找,终于找到了错误原因:

错误原因

  • 第一个是vm.max_map_count的值太低,需要重新设置。
  • 第二个是配置中至少需要设置 [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes]中的一个。

2.2.1 设置vm.max_map_count

设置方法: sysctl -w vm.max_map_count=262144

修改属性值

2.2.2 配置文件

说实话,Docker是最近才学的,至于容器的配置文件放在哪个位置还真不清楚,然后在网上查询也没找到结果,但是网上的教程提供了路径,就是: /usr/share/elasticsearch/config/elasticsearch.yml,但实际上还是找不到,后来想了想,可能需要进入容器的运行环境中才行。

于是启动容器,但是不到一分钟,容器就因为Bug没解决,无法一直运行,于是我先把命令先敲一遍,然后进入容器后直接粘贴,看看这配置文件写了啥。

  • 先启动容器。
    • docker start ES01
    • ES01是容器的名称。
  • 进入容器
    • docker exec -it ES01 /bin/bash
  • 查看配置文件信息
    • cat /usr/share/elasticsearch/config/elasticsearch.yml
  • 搞定!原来就写了两个内容,虽然不是很懂。
cluster.name: "docker-cluster"
network.host: 0.0.0.0

查看配置文件内容

知道了配置文件的内容,我就可以自定义一份配置信息,然后让容器启动时按照我的配置文件来执行就可以了,下面是我的配置信息。

cluster.name: "docker-cluster"
network.host: 0.0.0.0
node.name: node-1
cluster.initial_master_nodes: ["node-1"]

2.3 成功的启动

启动前先把之前的容器删除,反正留着也用不了。删除命令是docker rm ES01

这次启动容器,让它带着我自定义的配置文件来启动,启动命令有点长,不过就多了一个配置信息,还是能看懂的。

docker run -v ~/config/elasticsearch/es7140.yml:/usr/share/elasticsearch/config/elasticsearch.yml 
-e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 
--name ES01 elasticsearch:7.14.0

其中,~/config/elasticsearch/es7140.yml是我自定义配置信息的路径。

成功启动

这次算是真正的启动了,浏览器也可以访问了,不过浏览器访问至少要等个30秒,等容器启动之后才能真正访问到。

浏览器访问


参考资料

原文地址:https://www.cnblogs.com/bpf-1024/p/15377228.html