天天看點

系列教程丨用 Docker 探索開源軟體 —— Elasticsearch(三)

系列教程丨用 Docker 探索開源軟體 —— Elasticsearch(三)

出品丨Docker公司(ID:docker-cn)

編譯丨小東

每周一、三、五,與您不見不散!

Docker 的一大優點是可以讓您快速使用它來試用應用程式,而無需直接在開發人員的計算機上安裝它。如果您不想在自己的計算機上安裝 Java 或 erlang 等運作時環境,那麼您就可以不安裝它們,因為容器封裝了所有依賴項,并在删除時可以不留下任何痕迹。今天,我将帶來本系列第三篇文章,用 Docker 探索開源軟體 —— Elasticsearch,它将給我們一個機會來看看 docker-compose 是如何運用的。

注:為了了解本教程中的指令,我建議您使用 Play with Docker,它可以讓您在浏覽器中運作文章中涉及到的所有指令。

點選下列文章标題,回顧上期文章内容:

添加 Kibana 和 head 插件

在本文中,我将為一個 Kibana 執行個體和 Elasticsearch Head 插件的 docker-compose 檔案添加幾個容器。是以如下所示,這就是我們将要使用的最終“docker-compose.yaml”檔案:

version: '2.2'
services:
 elasticsearch:
   image: docker.elastic.co/elasticsearch/elasticsearch:6.4.2
   container_name: elasticsearch
   environment:
     - cluster.name=docker-cluster
     - bootstrap.memory_lock=true
     - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
     - http.cors.enabled=true
     - http.cors.allow-origin=*
     - discovery.zen.minimum_master_nodes=2
   ulimits:
     memlock:
       soft: -1
       hard: -1
   volumes:
     - esdata1:/usr/share/elasticsearch/data
   ports:
     - 9200:9200
   networks:
     - esnet
 
 elasticsearch2:
   image: docker.elastic.co/elasticsearch/elasticsearch:6.4.2
   container_name: elasticsearch2
   environment:
     - cluster.name=docker-cluster
     - bootstrap.memory_lock=true
     - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
     - "discovery.zen.ping.unicast.hosts=elasticsearch"
     - http.cors.enabled=true
     - http.cors.allow-origin=*
     - discovery.zen.minimum_master_nodes=2
   ulimits:
     memlock:
       soft: -1
       hard: -1
   volumes:
     - esdata2:/usr/share/elasticsearch/data
   networks:
     - esnet
 
 elasticsearch3:
   image: docker.elastic.co/elasticsearch/elasticsearch:6.4.2
   container_name: elasticsearch3
   environment:
     - cluster.name=docker-cluster
     - bootstrap.memory_lock=true
     - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
     - "discovery.zen.ping.unicast.hosts=elasticsearch"
     - http.cors.enabled=true
     - http.cors.allow-origin=*
     - discovery.zen.minimum_master_nodes=2
   ulimits:
     memlock:
       soft: -1
       hard: -1
   volumes:
     - esdata3:/usr/share/elasticsearch/data
   networks:
     - esnet
 
 kibana:
   image: 'docker.elastic.co/kibana/kibana:6.4.2'
   container_name: kibana
   environment:
     SERVER_NAME: kibana.local
     ELASTICSEARCH_URL: http://elasticsearch:9200
   ports:
     - '5601:5601'
   networks:
     - esnet
 
 headPlugin:
   image: 'mobz/elasticsearch-head:5'
   container_name: head
   ports:
     - '9100:9100'
   networks:
     - esnet
 
volumes:
 esdata1:
   driver: local
 esdata2:
   driver: local
 esdata3:
   driver: local
 
networks:
 esnet:
           

您可以下載下傳我的 YAML 檔案

curl https://gist.githubusercontent.com/markheath/f246ec3aa5a3e7493991904e241a416a/raw/a2685d1bf0414acbc684572d00cd7c7c531d0496/docker-compose-v4.yml > docker-compose-v4.yml
           

現在我們可以再次更新我們的叢集

docker-compose -f docker-compose-v4.yml up -d
           

嘗試 Kibana

完成此操作後,我們可以通過浏覽 localhost:5601 通路 Kibana 網站。如果您一直在“Play with Docker”中進行操作,那麼您将可以看到每個公開端口(9200、9100和5601)的特殊連結,如下圖所示:

系列教程丨用 Docker 探索開源軟體 —— Elasticsearch(三)

如果您點選5601連結,您将到達一個 Kibana 的執行個體。第一步是定義索引模式(例如:“customer *”):

系列教程丨用 Docker 探索開源軟體 —— Elasticsearch(三)

然後,如果您通路 discover 頁籤,那麼您将看到我們可以使用 Kibana 搜尋索引中的文檔:

系列教程丨用 Docker 探索開源軟體 —— Elasticsearch(三)

嘗試 Elasticsearch head 插件

您還可以通路localhost:9100(或在Play with Docker中,單擊9100連結)來使用 Elasticsearch head 插件。這為您提供了可視化的群集運作狀況:

系列教程丨用 Docker 探索開源軟體 —— Elasticsearch(三)

請注意,如果使用 Play with Docker,需要複制端口9200連結并将其粘貼到 Connect 文本框中,以便将 head 插件連接配接到 Elasticsearch 叢集。

清 理

停止并删除所有容器:

docker-compose -f docker-compose-v4.yml down
           

如果您還想删除卷(這樣所有索引資料都将丢失),請添加-v标志:

docker-compose -f docker-compose-v4.yml down -v
           

總 結

在本教程中,我們看到使用 Docker 運作 Elasticsearch 執行個體非常容易,我們可以使用它來試驗 API。但使用 Docker Compose,我們還可以定義容器間的互相通信,以及啟動它們的容器集合。所有這些都很容易用“docker-compose up”實作。

當我們更新 YAML 檔案時,Docker Compose 可以智能地決定需要更換哪些容器,哪些容器可以保留原樣。