Dockerfile+docker-compose 安裝 es + ik + kibana 6.4.2

ElderWoodp發表於2020-11-30

安裝 docker-compose

1.到github搜尋docker compose, 選中合適的版本下載下來

wget 'https://github.com/docker/compose/releases/download/1.27.4/docker-compose-Linux-x86_64'

2.移動重新命名並賦予執行許可權

 mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
 
 chmod 777 /usr/local/bin/docker-compose

3.配置環境變數

vim /etc/profile
# 在 PATH 中新增路徑/usr/local/bin 後儲存退出

# 使環境變數生效
source /etc/profile

4.測試

docker-compose

準備安裝目錄

sudo mkdir -p /opt/docker/elk /opt/docker/es /opt/docker/kibana
chmod 777 /opt/docker/elk /opt/docker/es /opt/docker/kibana

準備es的Dockerfile

a. 準備自定義詞典
cd /opt/docker/es && mkdir dic && cd /opt/docker/es/dic
# 自定義詞典
sudo vim custom_dict.dic
b. 下載ik分詞
# 建立目錄
sudo mkdir -p /opt/docker/es/plugins/ik
cd /opt/docker/es/plugins/ik

# github搜尋ik下載跟es、kibana一樣的版本
wget "https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.4.2/elasticsearch-analysis-ik-6.4.2.zip"

# 解壓
unzip elasticsearch-analysis-ik-6.4.2.zip

# 配置(docker es)內自定義詞典的路徑
sudo vim /opt/docker/es/plugins/ik/config/IKAnalyzer.cfg.xml
<!--使用者可以在這裡配置自己的擴充套件字典 -->
<entry key="ext_dict">/usr/share/elasticsearch/dic/custom_dict.dic</entry>
c. 把docker es 的 config 資料夾 複製一份到宿主機
# 啟動一個臨時的es容器
docker run -d --name es_temp -p 9200:9200 -p 9300:9300  elasticsearch:6.4.2

# 檢視容器的狀態,和容器id
docker ps 

# 將es容器內的config資料夾複製到宿主機
sudo docker cp 容器id:/usr/share/elasticsearch/config /opt/docker/es/

# 複製完將停掉臨時容器、刪掉容器、刪掉映象
docker stop es_temp
docker rm es_temp
docker rmi elasticsearch:6.4.2

如果容器啟動失敗,使用docker logs es_temp -f 檢視日誌

我遇到的一個報錯
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

分配的虛擬記憶體max_map_count過低,使用以下命令更改
sudo sysctl -w vm.max_map_count=262144

d. 編寫Dockerfile
sudo vim /opt/docker/es/Dockerfile
from elasticsearch:6.4.2
# 容器啟動時將ik分詞器複製到容器內部
copy ./plugins/ /usr/share/elasticsearch/plugins/

kibana

a. 在宿主機準備配置檔案
sudo mkdir -p /opt/docker/kibana/config && cd /opt/docker/kibana/config/

sudo vim /opt/docker/kibana/config/kibana.yml
# Default Kibana configuration for docker target
server.name: kibana
server.host: "0"
# 這裡的ip要配成es容器的ip,而不是宿主機的ip
elasticsearch.url: "http://172.19.0.3:9200"
xpack.monitoring.ui.container.elasticsearch.enabled: false
elasticsearch.ssl.verificationMode: none

docker-compose

a. 建立docker-compose檔案
sudo vim /opt/docker/elk/docker-compose.yml
version: '3.7'
services:
  kibana:
    restart: always
    logging:
      driver: "json-file"
      options:
        max-size: "100m"
        max-file: "2"
    image: kibana:6.4.2
    container_name: kibana6
    ports:
      - 5601:5601
    volumes:
      - /opt/docker/kibana/config:/usr/share/kibana/config/ # 對映kibana的配置檔案
  es:
    restart: always
    build:
      context: ../es/       # Dockerfile所在的目錄
      dockerfile: Dockerfile   # Dockerfile的檔名
    container_name: es6
    ports:
      - 9300:9300
      - 9200:9200
    volumes:
      - /opt/docker/es/config/:/usr/share/elasticsearch/config/ # 對映es的配置檔案
      - /opt/docker/es/dic/:/usr/share/elasticsearch/dic/     # 對映自定義詞典檔案
      - /opt/docker/es/plugins/ik/config/IKAnalyzer.cfg.xml:/usr/share/elasticsearch/plugins/ik/config/IKAnalyzer.cfg.xml # 對映ik分詞器的配置檔案

儲存退出

b. 啟動容器
cd /opt/docker/elk

sudo docker-compose up -d

檢視容器狀態

docker ps -a

若kibana啟動失敗,檢視es容器的ip

docker inspect es容器id | grep IPAddress

更新kibana 的配置

sudo vim /opt/docker/kibana/config/kibana.yml
elasticsearch.url: "http://es容器ip:9200"

重新啟動容器

cd /opt/docker/elk && sudo docker-compose restart

訪問kibana: http://127.0.0.1:5601

相關文章