Website logo

Robert Chang

技術部落格

使用 Docker 啟動 Elasticsearch 以及 Kibana

上一篇文章 中有簡單提到透過 Docker 來安裝 Elasticsearch 的方式,但沒有特別的深入。

當然,官方也有提供詳細的文件關於如何利用 Docker 安裝 Elasticsearch。

官方 Docker 安裝連結

看完之後覺得寫得真的非常的詳細,但因為是把目標讀者當作要安裝在 Production 環境,所以比較囉唆一點,今天我們就以一個要在本地練習的角度出發,把 Elasticsearch 以及 Kibana 安裝起來!

啟動 Elasticsearch

上一篇文章 中有提到的兩個指令:

$ docker pull docker.elastic.co/elasticsearch/elasticsearch:8.9.1

$ docker run --name robert-es -p 9200:9200 -it -m 1GB docker.elastic.co/elasticsearch/elasticsearch:8.9.1

但執行後會發現儘管我們輸入 http://localhost:9200 也沒辦法連接上,這是因為 Elasticsearch 本身預設會啟動 Security Feature,所以一定要走 HTTPS 的協議才可以。

好的,接著我們嘗試連接 https://localhost:9200 ,會看到下面的畫面,需要進行最基本的 HTTP Basic Authentication。

screen shot

帳號密碼從哪裡來呢?我們回到終端機看一下 Elasticsearch 的 Log,會看到如下圖的畫面:

screen shot

圖片中的 CA 就是讓你驗證 HTTPS 用的

在 ℹ️ 的指示中有提到:

Password for the elastic user (reset with `bin/elasticsearch-reset-password -u elastic`):
J6Hi+xVjFs2ocZLbBs_m

所以回到網頁中,User 就是輸入 elastic,而密碼則是 Elasticsearch 在啟動時給予你的,以我的例子就是:J6Hi+xVjFs2ocZLbBs_m,輸入後就可以看到成功的畫面:

screen shot

但我們就是來教學不要走正規方式的,畢竟我們的主要目的是練習,而不是學習怎麼部署 Elasticsearch;但要記得在 Production 環境,HTTPS 以及身份驗證是最基本的安全防護。

如果要走正規的 HTTPS 以及如何部署,請參考官方文件,寫得非常詳細。

這邊先建立一個練習用的 Docker Network,方便等等和 Kibana 連線:

$ docker network create elastic

繞過 HTTPS 的啟動方式,記得加上 —net 的參數:

$ docker run --name robert-es --net elastic -p 9200:9200 -it -m 1GB -e "xpack.security.enabled=false" -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:8.9.1

其實就是透過環境變數的方式來設定 Elasticsearch,不要啟動 security feature 以及只啟動單個節點。

接著打開 http://localhost:9200 就能夠輕鬆地訪問 Elasticsearch 啦!

啟動 Kibana

到 Kibana 的 DockerHub 就能夠看到基本的指示,記得加上 —net 的參數:

$ docker run -d --name robert-kibana --net elastic -p 5601:5601 kibana:8.9.1

接著打開 http://localhost:5601 會看到下方的畫面:

screen shot

這時候如果是走 HTTPS 的話,就可以輸入啟動 Elasticsearch 給予的 Enrollment token 來進行驗證,但我們關閉了 security feature,要點擊下方的 Configure manually 來手動設定。

接著輸入:

screen shot

至於為什麼是 robert-es 呢?這和 Docker 虛擬網路的 DNS 有關係,但這邊不重要,只要照著輸入就可以了。

接著會看到下面的畫面:

screen shot

如何取得驗證碼呢?我們需要進入 Kibana 的容器內,並執行 kibana-verification-code 這個程式就能得到:

$ docker container exec -it robert-kibana bash
kibana@a0f7e06d86ac:~$ bin/kibana-verification-code
Your verification code is:  158 576

接著等待 Kibana 的驗證過程…

screen shot

通過之後就會看到 Kibana 的介面,這就代表我們成功地在本地利用 Docker 建立 Elasticsearch 以及 Kibana 的服務了。

screen shot

結語

恭喜你成功地安裝了 Elasticsearch,下一篇文章將會介紹 Elasticsearch 在啟動時做了些什麼呢?

上一篇文章Elasticsearch - 各環境基本安裝指南

下一篇文章Elasticsearch - 基本架構