Docker安裝ElasticSearch
阿新 • • 發佈:2020-12-31
拉取映象
這裡一定要確保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
解決辦法:
-
檢視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
-
進入Kibana容器
docker exec -it kibana bash cd config vi kibana.yml
修改對應的ip,將
"http://elasticsearch:9200"
中的elasticsearch
替換成第一步的ip就好了。 -
修改完成後退出容器,再重啟容器就好了
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)]