由于咱们须要使用docker来进行安装,咱们必须安装:html
获取Docker的Elasticsearch就像对Elastic Docker注册表发出docker pull命令同样简单。node
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.3.2
docker
上面是以Elasticsearch 7.3.2为例来示范的。在实际的使用中,能够替换它用本身喜欢的版本。bootstrap
从命令行运行Elasticsearch。使用如下命令能够快速启动Elasticsearch以进行开发或测试:浏览器
docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.3.2
请注意single-node discovery,该发现容许绕过单节点开发集群中的bootstrap checks 检查。bash
vm.max_map_count
内核设置须要设置为至少262144才能用于生产环境。 vm.max_map_count
设置应该在/etc/sysctl.conf
中永久设置:网络
$ grep vm.max_map_count /etc/sysctl.conf vm.max_map_count=262144
要在实时系统上应用该设置,请执行如下操做:elasticsearch
sysctl -w vm.max_map_count = 262144
docker pull docker.elastic.co/kibana/kibana:7.3.2
tcp
可使用如下命令快速启动Kibana并将其链接到本地Elasticsearch容器以进行开发或测试:ide
docker run --link YOUR_ELASTICSEARCH_CONTAINER_NAME_OR_ID:elasticsearch -p 5601:5601 {docker-repo}:{version}
针对咱们的状况,咱们首先按照上面的步骤把Elasticsearch的docker运行起来,而后执行以下的命令:
docker ps
显示的结果以下:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3839f34c1d2d docker.elastic.co/elasticsearch/elasticsearch:7.3.2 "/usr/local/bin/dock…" 7 minutes ago Up 7 minutes 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp admiring_matsumoto
上面的docker信息是已经安装好的的Elasticsearch的docker信息。咱们而后执行以下的命令:
docker run --link 3839f34c1d2d:elasticsearch -p 5601:5601 docker.elastic.co/kibana/kibana:7.3.2
这样咱们的Kibana docker就起来了。
在这一步,咱们假定咱们已经下载好Elasticsearch和Kibana的docker image。若是你尚未这么作,能够执行以下的命令下载:
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.3.2 docker pull docker.elastic.co/kibana/kibana:7.3.2
紧接着下来,咱们来建立一个叫作docker的目录,并在这个目录里建立一个叫作docker-compose.yml的文件。它的内容以下:
version: '2.2' services: es01: image: docker.elastic.co/elasticsearch/elasticsearch:7.3.2 container_name: es01 environment: - node.name=es01 - discovery.seed_hosts=es02 - cluster.initial_master_nodes=es01,es02 - cluster.name=docker-cluster - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: memlock: soft: -1 hard: -1 volumes: - esdata01:/usr/share/elasticsearch/data ports: - 9200:9200 networks: - esnet es02: image: docker.elastic.co/elasticsearch/elasticsearch:7.3.2 container_name: es02 environment: - node.name=es02 - discovery.seed_hosts=es01 - cluster.initial_master_nodes=es01,es02 - cluster.name=docker-cluster - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: memlock: soft: -1 hard: -1 volumes: - esdata02:/usr/share/elasticsearch/data networks: - esnet kibana: image: docker.elastic.co/kibana/kibana:7.3.2 container_name: kibana ports: ['5601:5601'] networks: ['esnet'] environment: - SERVER_NAME=kibana.localhost - ELASTICSEARCH_HOSTS=http://es01:9200 - I18N_LOCALE=zh-CN - ELASTICSEARCH_USERNAME=elastic - ELASTICSEARCH_PASSWORD=mypasword depends_on: ['es01'] volumes: esdata01: driver: local esdata02: driver: local networks: esnet:
在这个配置中,咱们建立了两个Elasticsearch的node:es01及es02。节点es01侦听localhost:9200,而es02经过Docker网络与es01对话。同时咱们也建立了另一个kibana的docker。咱们能够在environment中配置它所须要的参数。
等咱们建立好这个docker-compose.yml文件后,咱们在当前的目录下,打入以下的命令:
docker-compose up
或者:
docker-compose up -d
这里的-d选项表示在detached模式下,运行容器在后台。
咱们最终能够在浏览器中看见咱们的Kibana被启动的样子
如同咱们以前的设置同样, 它运行起来的Locale设置的是中文。咱们也能够同时看到两个被启动的Elasticsearch的节点:
一旦docker启动后,咱们能够经过docker的命令来执行一些命令,好比
docker exec es01 ls /usr/share/elasticsearch
咱们能够经过以下的命令进入到docker进行安装等:
docker exec -it es01 /bin/bash $ docker exec -it es01 /bin/bash [root@ec4d19f59a7d elasticsearch]# ls LICENSE.txt README.textile config jdk logs plugins NOTICE.txt bin data lib modules [root@ec4d19f59a7d elasticsearch]#
这里的es01是咱们的Elasticsearch实例的名称。
咱们也能够经过以下的方式来配置Kibana。咱们能够在docker-compose.yml的目录下建立另一个叫作kibana.yml的文件:
kibana.yml # # ** THIS IS AN AUTO-GENERATED FILE ** # # Default Kibana configuration for docker target server.name: kibana server.host: "0" elasticsearch.hosts: [ "http://elasticsearch:9200" ] i18n.locale: "zh-CN" xpack.monitoring.ui.container.elasticsearch.enabled: true
这里咱们作了一些简单的设置,好比咱们配置了locale为中文。咱们能够修改咱们的docker-compose.yml文件以下:
docker-compose.yml version: '2.2' services: es01: image: docker.elastic.co/elasticsearch/elasticsearch:7.3.2 container_name: es01 environment: - node.name=es01 - discovery.seed_hosts=es02 - cluster.initial_master_nodes=es01,es02 - cluster.name=docker-cluster - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: memlock: soft: -1 hard: -1 volumes: - esdata01:/usr/share/elasticsearch/data ports: - 9200:9200 networks: - esnet es02: image: docker.elastic.co/elasticsearch/elasticsearch:7.3.2 container_name: es02 environment: - node.name=es02 - discovery.seed_hosts=es01 - cluster.initial_master_nodes=es01,es02 - cluster.name=docker-cluster - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: memlock: soft: -1 hard: -1 volumes: - esdata02:/usr/share/elasticsearch/data networks: - esnet kibana: image: docker.elastic.co/kibana/kibana:7.3.2 container_name: kibana networks: ['esnet'] ports: ['5601:5601'] environment: - ELASTICSEARCH_HOSTS=http://es01:9200 volumes: - ./kibana.yml:/usr/share/kibana/config/kibana.yml volumes: esdata01: driver: local esdata02: driver: local networks: esnet:
在这里,咱们经过在kibana中的volumes来把本地的kibana.yml文件bind mount到咱们的docker之中的image里。这样它代替docker里的/usr/share/kibana/config/kibana.yml文件从而使用咱们在本地设置的kibana.yml文件。
当docker把全部的容器都跑起来后,咱们能够经过以下的命令来查看:
$ docker-compose ps Name Command State Ports -------------------------------------------------------------------------------- es01 /usr/local/bin/docker-entr ... Up 0.0.0.0:9200->9200/tcp, 9300/tcp es02 /usr/local/bin/docker-entr ... Up 9200/tcp, 9300/tcp kibana /usr/local/bin/dumb-init - ... Up 0.0.0.0:5601->5601/tcp
它显示了全部的端口的使用状况。
咱们能够经过以下的办法把docker实例都停下来:
docker-compose down
这样咱们很快地部署咱们的Elasticsearch集群。
参考:
【1】https://www.elastic.co/guide/en/kibana/7.3/docker.html
【2】https://www.elastic.co/guide/en/elasticsearch/reference/7.3/install-elasticsearch.html