拉取鏡像node
docker pull elasticsearch:7.5.1
建立網絡docker
若是須要安裝kibana等其餘,須要建立一個網絡,名字任意取,讓他們在同一個網絡,使得es和kibana通訊bootstrap
docker network create esnet(這個名字能夠自定義,可是注意啓動kibana是名字保持一致)
建立數據卷跨域
此處爲了docker容器刪除或者其餘異常狀況,將ES的重要數據掛載到宿主機網絡
# 查看當前數據局列表 docker volume ls # 建立數據卷 docker volume create es-1(名字自擬) # 查看數據卷信息 docker volume inspect es-1
對應的ES節點掛載到對應的數據卷cors
將數據卷在宿主機的文件受權curl
經過上面查看數據卷信息命令能夠看到數據卷具體在宿主的位置 通常在/var/lib/docker/volumes下 受權命令:chmod 777 文件夾
這個操做主要是後面啓動ES時須要進行寫入操做elasticsearch
啓動ES容器tcp
本次搭建一個僞集羣ide
# 啓動第一個 docker run --name es-1 -d -p 9200:9200 -p 9300:9300 --network esnet --mount type=bind,src=/var/lib/docker/volumes/es-1/_data,dst=/usr/share/elasticsearch/data 2bd69c322e98 # 啓動第二個 docker run --name es-2 -d -p 9201:9201 -p 9301:9301 --network esnet --mount type=bind,src=/var/lib/docker/volumes/es-2/_data,dst=/usr/share/elasticsearch/data 2bd69c322e98 #啓動第三個 docker run --name es-3 -d -p 9202:9202 -p 9302:9302 --network esnet --mount type=bind,src=/var/lib/docker/volumes/es-3/_data,dst=/usr/share/elasticsearch/data 2bd69c322e98
在此處啓動時通常會出現以下錯誤:
ERROR: [2] bootstrap checks failed [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] [2]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
第一個問題能夠經過以下命令解決
sysctl -w vm.max_map_count=262144
第二個問題則須要經過配置ES的配置文件,固然也能夠經過參數輸入的方式(-e "")
但親測時這樣建立的集羣clusteruuid將會是"_na",這樣節點接不能互通
ES的配置文件路徑:/usr/share/elasticsearch/config
#集羣名稱 cluster.name: my #節點名稱 node.name: node-1 #是否是有資格主節點 node.master: true #是否存儲數據 node.data: true #最⼤集羣節點數 node.max_local_storage_nodes: 3 #⽹關地址 network.host: 0.0.0.0 # 設置其它結點和該結點交互的ip地址,若是不設置它會自動判斷,值必須是個真實的ip地址 # 若是是docker安裝節點的IP將會是配置的IP而不是docker網管ip network.publish_host: 192.168.172.128 #端⼝ http.port: 9200 #內部節點之間溝通端⼝ transport.tcp.port: 9300 #es7.x 以後新增的配置,寫⼊候選主節點的設備地址,在開啓服務後能夠被選爲主節點 discovery.seed_hosts: ["192.168.172.128:9300","192.168.172.128:9301","192.168.172.128:9302"] #es7.x 以後新增的配置,初始化⼀個新的集羣時須要此配置來選舉master cluster.initial_master_nodes: ["node-1", "node-2","node-3"] #數據和存儲路徑 path.data: /usr/share/elasticsearch/data path.logs: /usr/share/elasticsearch/logs # 解決跨域問題 http.cors.enabled: true http.cors.allow-origin: "*"
檢驗是否安裝成功
http://192.168.172.128:9200/_cat/nodes 192.168.172.128 29 46 4 0.01 0.12 0.34 dilm - node-3 192.168.172.128 20 46 3 0.01 0.12 0.34 dilm - node-1 192.168.172.128 21 46 3 0.01 0.12 0.34 dilm * node-2 帶*的節點就是master
拉取鏡像
docker pull kibana:7.5.1(注意版本)
因爲前面已經建立過網絡,啓動kibana
docker run -d --name kibana --net esnet -p 5601:5601 2d043e33afa4
安裝好kibana後直接經過下列方式訪問會拋出錯誤
curl http://localhost:5601
錯誤以下
Kibana server is not ready yet
修改kibana配置文件kibana.yml
配置文件路徑:/usr/share/kibana/config
# # ** THIS IS AN AUTO-GENERATED FILE ** # # Default Kibana configuration for docker target server.name: kibana server.host: "0" elasticsearch.hosts: [ "http://192.168.172.128:9200","http://192.168.172.128:9201","http://192.168.172.128:9202" ] xpack.monitoring.ui.container.elasticsearch.enabled: true
http://192.168.172.128:5601/
進行查看
選擇紅框選項,由於上面的選項須要配置一些私密鑰之類的
集體的docker容器操做能夠查看本人的另外一篇博文:http://www.javashuo.com/article/p-xvasogqi-mp.html