Docker安裝Elasticsearch?8.x的實現示例
前言
在現代應用架構中,Elasticsearch 是一款強大的分布式搜索引擎,廣泛應用于日志分析、實時搜索、數據可視化等場景。通過 Docker 部署 Elasticsearch,可以快速搭建、靈活擴展,并與容器化平臺無縫集成。
本文將詳細介紹如何使用 Docker 安裝和配置 Elasticsearch 8.x,包括目錄結構設置、配置文件管理、容器啟動與管理、端口配置、日志查看、服務訪問等內容,幫助你快速搭建一個高效、可維護的 Elasticsearch 環(huán)境。
一、準備工作
首先,確保你的系統(tǒng)上已經安裝了 Docker。
Linux上進行Docker安裝有兩種方式:
- Docker自動化安裝
- Docker手動安裝
可以根據該文章的步驟進行安裝:http://www.dbjr.com.cn/server/322968bze.htm
二、設置容器的目錄結構
為了持久化存儲日志、數據、配置和插件,需要在宿主機上創(chuàng)建對應目錄,并賦予 Elasticsearch 容器內部用戶的寫權限。
# 安裝路徑 DIR="/opt/docker/demo" DOCKER_NAME="docker-elasticsearch" # 創(chuàng)建目錄結構 mkdir -p "$DIR/elasticsearch/logs" mkdir -p "$DIR/elasticsearch/data" mkdir -p "$DIR/elasticsearch/config" mkdir -p "$DIR/elasticsearch/plugins" # 賦予文件權限 chmod -R 777 $DIR/elasticsearch/
三、啟動一個臨時的容器來復制配置文件
啟動一個臨時的 Elasticsearch 容器,用于復制默認配置文件到宿主機。
docker run -d \ --restart=always \ --name elasticsearch \ --network host \ -p 9388:9200 \ -p 9389:9300 \ --privileged \ -e "discovery.type=single-node" \ -e "ES_JAVA_OPTS=-Xms2g -Xmx2g" \ docker.elastic.co/elasticsearch/elasticsearch:8.17.0
四、復制配置文件到本地目錄
將容器中的配置文件復制到宿主機的對應目錄。
docker cp elasticsearch:/usr/share/elasticsearch/data $DIR/elasticsearch/ docker cp elasticsearch:/usr/share/elasticsearch/plugins $DIR/elasticsearch/ docker cp elasticsearch:/usr/share/elasticsearch/config $DIR/elasticsearch/ docker cp elasticsearch:/usr/share/elasticsearch/logs $DIR/elasticsearch/
五、刪除臨時容器
docker stop elasticsearch docker rm elasticsearch
六、創(chuàng)建并運行容器,掛載本地目錄
使用以下命令啟動 Elasticsearch 容器,并掛載本地目錄。
docker run -d \ --name "$DOCKER_NAME" \ --restart=always \ --network host \ -v "$DIR/elasticsearch/data:/usr/share/elasticsearch/data" \ -v "$DIR/elasticsearch/plugins:/usr/share/elasticsearch/plugins" \ -v "$DIR/elasticsearch/config:/usr/share/elasticsearch/config" \ -v "$DIR/elasticsearch/logs:/usr/share/elasticsearch/logs" \ -e "discovery.type=single-node" \ -e "ES_JAVA_OPTS=-Xms2g -Xmx2g" \ -e "ELASTIC_PASSWORD=123456" \ docker.elastic.co/elasticsearch/elasticsearch:8.17.0
七、修改文件配置監(jiān)聽端口
修改配置文件 $DIR/elasticsearch/config/elasticsearch.yml
cluster.name: "docker-cluster" network.host: 0.0.0.0 http.port: 9200
八、端口配置:Host 網絡模式 vs Port 映射模式
1. Host 網絡模式
docker run -d \ --restart=always \ --name "$DOCKER_NAME" \ --network host \ -v "$DIR/elasticsearch/data:/usr/share/elasticsearch/data" \ -v "$DIR/elasticsearch/plugins:/usr/share/elasticsearch/plugins" \ -v "$DIR/elasticsearch/config:/usr/share/elasticsearch/config" \ -v "$DIR/elasticsearch/logs:/usr/share/elasticsearch/logs" \ -e "discovery.type=single-node" \ -e "ES_JAVA_OPTS=-Xms2g -Xmx2g" \ -e "ELASTIC_PASSWORD=123456" \ docker.elastic.co/elasticsearch/elasticsearch:8.17.0
特點:
在 Host 網絡模式下,容器共享宿主機的網絡棧,容器內的網絡接口直接映射到宿主機的網絡接口。?這意味著容器可以使用宿主機的 IP 地址和端口進行通信。?對于 Elasticsearch 來說,使用 Host 網絡模式可以減少網絡延遲,提高性能。
優(yōu)點:
簡化網絡配置,無需額外的
-p
端口映射。延遲更低,吞吐更高。
缺點:
與宿主機完全共享端口,若宿主機已有同端口服務運行,會沖突。
安全隔離較弱,容器網絡直接暴露給宿主機。
2. Port 映射模式
docker run -d \ --restart=always \ --name "$DOCKER_NAME" \ -p 9201:9200 \ -p 9301:9300 \ -v "$DIR/elasticsearch/data:/usr/share/elasticsearch/data" \ -v "$DIR/elasticsearch/plugins:/usr/share/elasticsearch/plugins" \ -v "$DIR/elasticsearch/config:/usr/share/elasticsearch/config" \ -v "$DIR/elasticsearch/logs:/usr/share/elasticsearch/logs" \ -e "discovery.type=single-node" \ -e "ES_JAVA_OPTS=-Xms2g -Xmx2g" \ -e "ELASTIC_PASSWORD=123456" \ docker.elastic.co/elasticsearch/elasticsearch:8.17.0
特點:
在 Port 映射模式下,容器使用 Docker 的默認橋接網絡,容器內的端口通過宿主機的端口進行映射。?這種方式適用于需要將容器服務暴露給外部訪問的場景。?例如,將容器的 9200 端口映射到宿主機的 9201 端口。
優(yōu)點:
容器與宿主機網絡隔離,提高安全性。
可以在同一宿主機上運行多個容器,避免端口沖突。
缺點:
可能增加網絡延遲,影響性能。
需要手動配置端口映射,增加配置復雜度。
九、查看日志和檢查容器狀態(tài)
使用以下命令查看 Elasticsearch 容器的日志:
docker logs -f "$DOCKER_NAME"
要查看容器的狀態(tài),可以使用:
docker ps -a
如果容器未運行,可以使用以下命令啟動:
docker start "$DOCKER_NAME"
十、訪問服務
在瀏覽器中訪問以下地址,檢查 Elasticsearch 是否正常運行默認的用戶名為:elastic
密碼:123456
http://localhost:9200
如果使用了 Port 映射模式,并將容器的 9200 端口映射到宿主機的 9201 端口,則應訪問:
http://localhost:9201
應該看到類似以下的 JSON 響應:
{ "name" : "docker-cluster", "cluster_name" : "docker-cluster", "cluster_uuid" : "abcdefghijklmno", "version" : { "number" : "8.17.0", "build_flavor" : "default", "build_type" : "deb", "build_hash" : "1234567890abcdef", "build_date" : "2025-04-15T12:34:56.789Z", "build_snapshot" : false, "lucene_version" : "8.10.0", "minimum_wire_compatibility_version" : "7.10.0", "minimum_index_compatibility_version" : "7.10.0" }, "tagline" : "You Know, for Search" }
十一、Elasticsearch 常用操作命令
檢查集群健康狀態(tài)
使用以下命令檢查 Elasticsearch 集群的健康狀態(tài):
curl -X GET "localhost:9200/_cluster/health?pretty"
查看所有索引
使用以下命令檢查 Elasticsearch 集群的健康狀態(tài):
curl -X GET "localhost:9200/_cat/indices?v"
創(chuàng)建索引
使用以下命令創(chuàng)建一個新的索引:
curl -X PUT "localhost:9200/my_index"
刪除索引
使用以下命令刪除指定的索引:
curl -X DELETE "localhost:9200/my_index"
查詢索引中的所有文檔
使用以下命令查詢索引中的所有文檔:
curl -X GET "localhost:9200/my_index/_search?q=*:*
修改用戶密碼
Elasticsearch 提供了 elasticsearch-reset-password
工具,用于重置用戶密碼。?例如,重置 elastic 用戶的密碼:
docker exec -it elasticsearch bin/elasticsearch-reset-password -u elastic
執(zhí)行后,系統(tǒng)將提示輸入新密碼并確認。?請確保在生產環(huán)境中妥善保管密碼。
查看集群節(jié)點信息
curl -X GET "localhost:9200/_cat/nodes?v"
查看集群分片分配情況
curl -X GET "localhost:9200/_cat/shards?v"
查看集群所有分配情況
curl -X GET "localhost:9200/_cat/allocation?v"
查看索引文檔數量
curl -X GET "localhost:9200/my_index/_count"
到此這篇關于Docker 安裝 Elasticsearch 8.x的文章就介紹到這了,更多相關Docker 安裝 Elasticsearch 8.x內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Docker方式創(chuàng)建keepalived連接MGR集群
本文介紹了通過Docker方式創(chuàng)建keepalived代理訪問MGR集群的詳細步驟,包括重新制作鏡像、導入新鏡像、創(chuàng)建容器等操作,并說明了配置文件的關鍵參數,通過這種方式,可以避免手動修改數據庫連接地址,實現主節(jié)點故障時的自動故障轉移2022-05-05Docker consul的容器服務更新與發(fā)現的問題小結
這篇文章主要介紹了Docker consul的容器服務更新與發(fā)現,講解了服務注冊與發(fā)現的基本概念講解,本文給大家介紹的非常詳細,需要的朋友可以參考下2021-08-08使用Docker快速搭建Oracle開發(fā)環(huán)境的方法教程
這篇文章主要給大家介紹了使用Docker快速搭建Oracle開發(fā)環(huán)境的方法教程,文中給出了詳細的解決方法,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。2017-06-06