正常情况下docker拉取es,9200端口(api)可以访问到,5.0版本后9300端口(client)访问不到,本文针对此情况给出解决方案

一、拉取es

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

二、复制docker中配置文件到本地目录

2.1 进入es容器

docker exec -it tensquare_elasticsearch /bin/bash

2.2 复制es配置文件到本地

// ES01为 images 中的name
docker cp ES01:/usr/share/elasticsearch/config/elasticsearch.yml /usr/share/elasticsearch.yml

三、启动 es

// -v读的配置文件地址 -e运行时参数 -p指定端口(外部:内部) --name容器命名
docker run -v /usr/share/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -e "ES_JAVA_OPTS=-Xms256m -Xmx256m" -p 9200:9200 -p 9300:9300 --name ES01 0206b7302cfe

此时启动es后总会自动关闭

三、修改配置文件(重要)

  1. /usr/share/elasticsearch.yml
    其作用是允许任何ip地址访问elasticsearch 。
    开发测试阶段可以这么做,生产环境下指定具体的IP
    在这里插入图片描述
  2. 查看日志
// 发现还是会自己关闭,此时查看日志
docker logs -f  容器id

日志内容
在这里插入图片描述
3. 修改参数

查看max_map_count :
cat /proc/sys/vm/max_map_count
65530
 
设置max_map_count:
sysctl -w vm.max_map_count=262144
vm.max_map_count = 26214
  1. 重启容器:docker start 容器id或名字
    浏览器就能访问了
  2. success
    docker 已可启动
    docker查看
    外部也可ping通
    在这里插入图片描述
Logo

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

更多推荐