由於咱們須要使用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