拉取镜像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