docker鏡像地址:https://www.docker.elastic.co/#node
首先安裝docker-compose,使用pip安裝docker-compose,由於pip能夠自動對應版本問題python
安裝pipdocker
yum -y install epel-release yum -y install python-pip
確認版本vim
pip --version
更新pip瀏覽器
pip install --upgrade pip
安裝docker-composeapp
pip install docker-compose
查看版本cors
docker-compose version
下載elasticsearch docker pull docker.elastic.co/elasticsearch/elasticsearch:7.1.1 下載logstash docker pull docker.elastic.co/logstash/logstash:7.1.1 下載kibana docker pull docker.elastic.co/kibana/kibana:7.1.1
編寫docker-compose.yml文件,在/opt/目錄下新建一個elkDocker目錄elasticsearch
mkdir /opt/elkDocker
進入elkDocker目錄ide
cd /opt/elkDocker
新建docker-compose.yml文件this
vi docker-compose.yml version: '2.2' services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:7.1.1 container_name: elasticsearch7.1.1 environment: - discovery.type=single-node - "ES_JAVA_OPTS=-Xms512m -Xmx512m" volumes: - esdata:/usr/share/elasticsearch/data hostname: elasticsearch restart: always ports: - 9200:9200 - 9300:9300 kibana: image: docker.elastic.co/kibana/kibana:7.1.1 container_name: kibana7.1.1 environment: - elasticsearch.hosts=http://elasticsearch:9200 hostname: kibana depends_on: - elasticsearch restart: always ports: - "5601:5601" logstash: image: docker.elastic.co/logstash/logstash:7.1.1 container_name: logstash7.1.1 hostname: logstash restart: always depends_on: - elasticsearch ports: - 9600:9600 - 5044:5044 volumes: esdata: driver: local
在yml文件所在目錄執行
docker-compose up -d
出現done表示成功,docker-compose logs 查看日誌(分別輸出elk三個服務的日誌)執行docker ps能夠看到三個服務的運行狀態
在瀏覽器輸入http://IP:5601/
須要注意狀況以下:
1.不要下載docker官方的鏡像,最好使用 elastic官方倉庫裏的鏡像
2.若是出現啓動不成功,先把其餘兩個註釋掉,一個一個服務單獨運行試試
3.logstash須要監聽elasticsearch服務,否則logstash會自動停掉
4.logstash和kibana能夠不用設置關聯 elasticsearch 的環境變量,官網文檔說若是是docker鏡像有默認設置
5.若是本身修改了服務名稱或者端口要記得修改默認的設置
下面開始安裝ElasticSearch-Head
拉取ElasticSearch-Head鏡像
docker pull mobz/elasticsearch-head:5
運行ElasticSearch-Head容器
docker run -d --name es_admin -p 9100:9100 mobz/elasticsearch-head:5在瀏覽器輸入http://IP:9100
注: 運行ElasticSearch-Head容器時若是出現報錯以下:
docker: Error response from daemon: Conflict. The container name "/es_admin" is already in use by container "a9a2a5c74ab3b2dc42c2260fad0b0b1dd6e7c768a5cfb2ddbb121eb2946a370c". You have to remove (or rename) that container to be able to reuse that name.則執行 docker container ls -all 查看CONTAINER ID 而後執行 docker rm id號
以後從新執行docker run -d --name es_admin -p 9100:9100 mobz/elasticsearch-head:5 便可
注: Elasticsearch-head 鏈接不上Elasticsearch的緣由和解決方案
1.修改elasticsearch-head下Gruntfile.js文件,內容以下:
connect: { server: { options: { hostname: '0.0.0.0', port: 9100, base: '.', keepalive: true } } }
2.修改elasticsearch-head_site\app.js 文件。this.base_uri 改成下面的值。
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://localhost:9200";編輯配置文件
vim /etc/elasticsearch/elasticsearch.yml
增長下面兩項
http.cors.enabled: true http.cors.allow-origin: "*"
而後重啓 elasticsearch ,訪問 http://localhost:9100/ 就能夠成功的鏈接上 9200 端口