序言
在当今数字化时代,搜索功能和数据可视化分析对于应用程序的重要性越来越突出。Elasticsearch 和 Kibana 是两个备受欢迎的工具,它们能够为你的应用程序提供卓越的搜索和数据可视化功能。而通过 Docker,你可以轻松地将它们部署到你的开发或生产环境中。
一、Elasticsearch 部署流程
-
创建网络:目的是让 Elasticsearch 和 Kibana 容器互联。
docker network create es-net
-
拉取镜像
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.15.1
-
启动容器
docker run \ # 后台启动 -d \ # 指定容器名称 --name es \ # 设置内存大小 -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \ # 设置非集群模式 -e "discovery.type=single-node" \ # 挂载逻辑卷,绑定 es 的数据目录 -v es-data:/usr/share/elasticsearch/data \ # 挂载逻辑卷,绑定 es 的日志目录 -v es-logs:/usr/share/elasticsearch/logs \ # 挂载逻辑卷,绑定 es 的插件目录 -v es-plugins:/usr/share/elasticsearch/plugins \ # 授予逻辑卷访问权 --privileged \ # 指定使用 es-net 网络 --network es-net \ # WEB 浏览器访问端口 -p 9200:9200 \ # es 节点之间的通信端口 -p 9300:9300 \ # 使用的镜像 docker.elastic.co/elasticsearch/elasticsearch:7.15.1
-
打开浏览器输入网址
localhost:9200
查看 Elasticsearch 容器是否正常启动
二、Kibana 部署流程
-
拉取镜像
docker pull docker.elastic.co/kibana/kibana:7.15.1
-
启动容器
docker run \ # 后台启动 -d \ # 指定容器名称 --name kibana \ # 指定使用 es-net 网络,与 elasticsearch 在同一个网络中 --network=es-net \ # 设置 elasticsearch 的地址 # 因为 kibana 已经与 elasticsearch 在一个网络,因此可以用容器名直接访问 elasticsearch -e ELASTICSEARCH_HOSTS=http://es:9200 \ # WEB 访问端口 -p 5601:5601 \ # 使用的镜像 docker.elastic.co/kibana/kibana:7.15.1
-
打开浏览器输入网址
localhost:5601
查看 Kibana 容器是否正常启动
三、Docker Compose 一键部署
之前,我们是分开部署的 Elasticsearch 和 Kibana。这种部署方式不仅需要保证部署的先后顺序(因为 Elasticsearch 必须先于 Kibana 启动),命令输入时也可能出错。为了解决这些问题,我们可以使用 Docker Compose 实现一键部署。
-
编写
docker-compose.yml
文件# 指定 Docker Compose 文件的版本 version: '3.7' # 定义服务 services: # Elasticsearch 服务 es: # 使用 Elasticsearch 镜像 image: docker.elastic.co/elasticsearch/elasticsearch:7.15.1 # 指定容器名称 container_name: es # 设置环境变量 environment: - ES_JAVA_OPTS=-Xms512m -Xmx512m - discovery.type=single-node # 挂载卷 volumes: - es-data:/usr/share/elasticsearch/data - es-logs:/usr/share/elasticsearch/logs - es-plugins:/usr/share/elasticsearch/plugins # 授予特权权限 privileged: true # 指定网络 networks: - es-net # 端口映射 ports: - "9200:9200" - "9300:9300" # Kibana 服务 kibana: # 使用 Kibana 镜像 image: docker.elastic.co/kibana/kibana:7.15.1 # 指定容器名称 container_name: kibana # 设置环境变量 environment: - ELASTICSEARCH_HOSTS=http://es:9200 # 指定网络 networks: - es-net # 端口映射 ports: - "5601:5601" # 依赖关系,确保 Elasticsearch 服务先于 Kibana 服务启动 depends_on: - es # 定义网络 networks: # 定义名为 es-net 的网络,使用 bridge 驱动 es-net: driver: bridge # 定义卷 volumes: # 定义名为 es-data 的卷 es-data: # 定义名为 es-logs 的卷 es-logs: # 定义名为 es-plugins 的卷 es-plugins:
-
在
docker-compose.yml
文件所在目录执行命令一键启动# 根据 docker-compose.yml 文件启动服务, 前台启动 docker-compose up
docker-compose up
命令属于前台启动,若想后台启动可执行以下命令# 后台启动 docker-compose up -d # 停止后台运行的服务 docker-compose down
-
打开浏览器输入网址
localhost:9200
和localhost:5601
查看 Elasticsearch 和 Kibana 容器启动情况
四、FAQ
- 部署 Elasticsearch 和 Kibana 时,需要注意版本的对应关系。否则,可能出现版本不兼容导致问题。
- 使用 Docker Compose 一键部署需要提前安装 Docker Compose。具体可参考官方文档