«

2021年11月26日 Win10下使用Docker部署ElasticSearch

Mahalalel 发布于 阅读:1667 Docker Desktop


背景

win10系统电脑安装Docker Desktop

拉取镜像

docker pull docker.elastic.co/elasticsearch/elasticsearch:6.3.0

查看docker镜像信息

docker image ls

镜像列表如下:
docker镜像列表

本地创建ES文件夹

data目录用来存放elasticsearch存储的数据。
结构目录如下:

dockerfile
    |- elasticsearch
    |    |- data
    |- docker-compose.yml

编写docker-compose文件

主要作用是批量启动容器,避免在使用多个容器的时候逐个启动的繁琐。
docker-compose.yml内容如下:

version: "3"
services:
  elasticsearch:
    image:  docker.elastic.co/elasticsearch/elasticsearch:6.3.0
    container_name: elasticsearch
    restart: always
    networks:
      - elk
    ports:
      - "9200:9200"
      - "9300:9300"
    volumes:
       - D:\\develop\\dockerfile\\elasticsearch\\data:/usr/share/elasticsearch/data

启动ES服务

执行过程如下图所示:

docker运行ElasticSearch

执行完成之后,通过 docker ps 命令查看,发现elasticsearch确实启动起来了

docker运行服务查看

Docker Desktop 查看运行日志

docker desktop运行镜像查看

在运行过程中发现ElasticSearch一直在重启,没有办法稳定运行。
排查发现ES服务运行的异常如下

[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

问题解决

原因:

Linux Distro Virtual Memory Areas 默认的vm.max_map_count值是65530,太小不足以支撑ELK的运行。需要将该值增大到至少262144。

解决方法一:

命令:

wsl -d docker-desktop
sysctl -w vm.max_map_count=262144
exit

然而这种方法有弊端,重启容器后发现以上设置失效了。
所以推荐下面这种。

解决方法二:

还是命令:

wsl -d docker-desktop
echo 262144 >> /proc/sys/vm/max_map_count
exit

这种方法即使系统重启、容器重启,参数仍然有效。

问题解决。

问题参考链接:
windows max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
vm.max_map_count [65530] is too low 问题解决(Windows 10、WSL 2、Docker Desktop)

docker ElasticSearch ES安装 ES启动