Docker安装ElasticSearch

拉取镜像

这里一定要确保elasticsearch和kibana的版本一直,否则后面可能会出现Kibana server is not ready yet的问题

# 存储和检索数据
docker pull elasticsearch:7.4.2 
# 可视化检索数据
docker pull kibana:7.4.2  

创建实例

mkdir -p /usr/local/localVolumes/elasticsearch/config
mkdir -p /usr/local/localVolumes/elasticsearch/data
echo "http.host:0.0.0.0">>/usr/local/localVolumes/elasticsearch/config/elasticsearch.yml
# 创建实例
docker run --name elasticsearch -p 9201:9200 -p 9301:9300 \
					-e "discovery:type=single-node" \
					-e ES_JAVA_OPTS="-Xms64m -Xmx256m" \
					-v /usr/local/localVolumes/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
					-v /usr/local/localVolumes/elasticsearch/data:/usr/share/elasticsearch/data \
					-v /usr/local/localVolumes/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
					-d elasticsearch:7.4.2

需要给与这个文件夹授予权限,负责可能无法启动elasticsearch

sudo chmod -R 777 /usr/local/localVolumes/*

安装可视化界面Kibana

docker run --name kibana -e ELASTICSEARCH_HOSTS=http://127.0.0.1:9201 -p 5602:5601 \
       -d kibana:7.4.2

http://localhost:9201 要改为自己的对应IP地址

注意,如果直接配置成localhost:9201或者127.0.0.1:9201,kibana可能依然无法访问,因为他应该配置容器的IP,而不是本机的IP

解决办法:

  1. 查看ElasticSearch 的容器内部 ip:

    docker inspect elasticsearch
    

    找到Networks下的IPAddress:

    "Networks": {
                    "bridge": {
                        "IPAMConfig": null,
                        "Links": null,
                        "Aliases": null,
                        "NetworkID": "c6a4ecc8620aa0b16560232c95d66a00d838ce697c518d0e284e2798736e26c5",
                        "EndpointID": "91f1d9346871113ffa8e328bf7b7aef4e9ebc70fdfab4d3c99099dc5abc5b3ba",
                        "Gateway": "172.17.0.1",
                        "IPAddress": "172.17.0.3",
                        "IPPrefixLen": 16,
                        "IPv6Gateway": "",
                        "GlobalIPv6Address": "",
                        "GlobalIPv6PrefixLen": 0,
                        "MacAddress": "02:42:ac:11:00:03",
                        "DriverOpts": null
                    }
                }
    

    记住该IP,我的是172.17.0.3

  2. 进入Kibana容器

    docker exec -it kibana bash
    cd config
    vi kibana.yml
    

    修改对应的ip,将"http://elasticsearch:9200" 中的 elasticsearch 替换成第一步的ip就好了。

  3. 修改完成后退出容器,再重启容器就好了

    docker stop kibana
    docker restart kibana
    

    再次访问localhost:5602, 正常了

    那么修改后的启动命令应该是:

    docker run --name kibana -e ELASTICSEARCH_HOSTS=http://172.17.0.3:9200 -p 5602:5601 \
           -d kibana:7.4.2
    

如果按照以上的仍然无法访问,可以继续往下看

ElsaticSearch缓存的问题

进入Kibana容器中,

docker exec -it kibana /bin/bash
bash-4.2$ ping 172.17.0.3
PING 172.17.0.3 (172.17.0.3) 56(84) bytes of data.
64 bytes from 172.17.0.3: icmp_seq=1 ttl=64 time=1.69 ms
64 bytes from 172.17.0.3: icmp_seq=2 ttl=64 time=0.102 ms
64 bytes from 172.17.0.3: icmp_seq=3 ttl=64 time=0.098 ms
64 bytes from 172.17.0.3: icmp_seq=4 ttl=64 time=0.127 ms
^C
--- 172.17.0.3 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3067ms
rtt min/avg/max/mdev = 0.098/0.506/1.698/0.688 ms
bash-4.2$ curl http://172.17.0.3:9200
{
  "name" : "be6174278743",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "7kjQgB_ZRx-HLcPZ3WtiBg",
  "version" : {
    "number" : "7.4.2",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "2f90bbf7b93631e52bafb59b3b049cb44ec25e96",
    "build_date" : "2019-10-28T20:40:44.881551Z",
    "build_snapshot" : false,
    "lucene_version" : "8.2.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

从上面的日志可以看出,容器间的访问也是正常的,头大,都没问题,后来无意中看到了博客提到缓存,试了试果然可行,操作步骤如下:

1. 停止kibana
docker stop kibana
2. 删除kibana索引
curl -XDELETE http://localhost:9201/.kibana*
3. 启动kibana
docker start kibana

​ 好了,稍等片刻,大概一分钟后吧,试试,果然可以正常访问了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BMEZtpPL-1609303353869)(/Users/sangkuofeng/Documents/MarkDown文档库/staticDocs/# Docker安装ElasticSearch.assets/image-20201227140936982.png)]

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值