正常情况下运用docker pull下es,然后使用docker run -p 9200:9200 -p 9300:9300 -d 容器,就可以运行容器,但是es有很多配置不得不让你蛋疼的启动不了,下面就楼主遇到的问题进行总结:

1、内存问题,

Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 2060255232, 0) failed; error='Cannot allocate memory' 

es默认2g(5.0以上版本),而在创建docker时默认内存是1g,导致启动失败,这时就需要修改加参数修改容器内存:所加参数为  :-e "ES_JAVA_OPTS=-Xms512m -Xmx512m"

2、启动时报:

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


需要修改机器max_map_count:

使用docker-machine ssh 机器名称

输入命令:sudo sysctl -w vm.max_map_count=262144

或者修改 /etc/sysctl.conf 文件,添加 “vm.max_map_count”设置

设置后,可以使用sysctl -a查看


3、max number of threads [1024] for user [elasticsearch] is too low, increase to at least [2048]

修改办法为加参数--ulimit nofile=65530:131072


到最后,pull完es后启动es完整命令为:

docker run --name es2 --ulimit nofile=65530:131072 -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" -p 6531:9200 -p 6532:9300 -d elasticsearch:5.2 -E bootstrap.memory_lock=false -E bootstrap.system_call_filter=false -E network.host=0.0.0.0 -E http.cors.enabled=true -E http.cors.allow-origin="*"


在windows的docker和docker toolbox下以及linux下亲测有效


Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐