1.1、Windows 版 Docker 需要运行在一个安装了 64 位 Windows 10 操作系统的计算机上,通过启动一个独立的引擎来提供 Docker 环境。
1.2、需要启用 Windows 操作系统中的 Hyper-V 和容器特性。
1) 右键单击 Windows 开始按钮并选择“应用和功能”页面。
2)单击“程序和功能”链接。
3) 单击“启用或关闭Windows功能”。
4)确认Hyper-V和容器复选框已经被勾选,并单击确定按钮。
按上述步骤操作完成后,会安装并开启 Hyper-V 和容器特性,如下图所示。这时需要重启操作系统。
1)访问docker官网(https://www.docker.com/),选择windows版本, 下载docker desktop。
2)docker安装完成后以管理员身份运行docker。
3)打开PowerShell,并尝试执docker version
命令。
4)docker desktop安装完成。
1)通过docker hub官网(https://hub.docker.com/)寻找 elasticsearch镜像。
2)寻找合适的elasticsearch版本
3)通过Windows的PowerShell命令,下载docker镜像
docker pull elasticsearch:8.7.1
4)查看镜像
docker images elasticsearch
5)因为docker和kibana需要共享同一个网络,所以利用docker创建一个共享网络es-net
docker network create es-net
6)查看共享网络
docker network ls
7)运行elasticsearch(在PowerShell中执行时,需要把"/"移除)
docker run -d --name es \
-e "ES_JAVA_OPTS=-Xms1024m -Xmx1024m" \
-e "discovery.type=single-node" \
-v C:\Users\14547\Desktop\lyq\elasticsearch\es-data:/usr/share/elasticsearch/data \
-v C:\Users\14547\Desktop\lyq\elasticsearch\es-plugins:/usr/share/elasticsearch/plugins \
-v C:\Users\14547\Desktop\lyq\elasticsearch\temp:/usr/temp \
--privileged \
--network es-net \
-p 9200:9200 \
-p 9300:9300 \
elasticsearch:8.7.1
8)运行参数详解
-d #容器后台运行
--name es #容器命名
-e "ES_JAVA_OPTS=-Xms1024m -Xmx1024m" #设置容器最小最大运行内存
-e "discovery.type=single-node" #设置es的运行模式是单机运行
-v C:\Users\14547\Desktop\lyq\elasticsearch\es-data:/usr/share/elasticsearch/data #数据卷,方便容器持久化
-v C:\Users\14547\Desktop\lyq\elasticsearch\es-plugins:/usr/share/elasticsearch/plugins #数据卷,方便容器持久化
-v C:\Users\14547\Desktop\lyq\elasticsearch\temp:/usr/temp #数据卷,方便容器持久化
--privileged #以最大权限运行容器
--network es-net #执行容器运行网络,与kibana运行保持在同一网络
-p 9200:9200 #开放端口
-p 9300:9300 #开放端口
elasticsearch:8.7.1 #运行镜像和tag
9)查看容器运行情况
docker ps -f name=es
10)访问es,地址:http://localhost:9200/,需要密码验证
X-Pack是Elastic Stack扩展功能,提供安全性,警报,监视,报告,机器学习和许多其他功能。 ES7.0+之后,默认情况下,当安装Elasticsearch时,会安装X-Pack,无需单独再安装。
自6.8以及7.1+版本之后,基础级安全永久免费。
默认为true,启用节点上ES的XPACK安全功能,相当于总开关
这个是用来开启https的,以及对应的设置,整体配置项如下:
xpack.security.http.ssl:
enabled: false 【开启还是关闭】
verification_mode: certificate【如下】
【full:它验证所提供的证书是否由受信任的权威机构(CA)签名,并验证服务器的主机名(或IP地址)是否与证书中识别的名称匹配。】
【certificate:它验证所提供的证书是否由受信任的机构(CA)签名,但不执行任何主机名验证。】
【none:它不执行服务器证书的验证。】
truststore.path: certs/elastic-certificates.p12 【信任存储库文件的存放位置】
keystore.path: certs/elastic-certificates.p12【密钥存储库文件的存放位置】
这个是传输层的认证设置,整体配置项如下:
xpack.security.transport.ssl:
enabled: true【开启还是关闭】
verification_mode: certificate【如下】
【full:它验证所提供的证书是否由受信任的权威机构(CA)签名,并验证服务器的主机名(或IP地址)是否与证书中识别的名称匹配。】
【certificate:它验证所提供的证书是否由受信任的机构(CA)签名,但不执行任何主机名验证。】
【none:它不执行服务器证书的验证。】
keystore.path: certs/elastic-certificates.p12【信任存储库文件的存放位置】
truststore.path: certs/elastic-certificates.p12【密钥存储库文件的存放位置】
进入docker容器的方法有两种:
1)通过PowerShell,执行命令,进入容器内部执行命令
docker exec -it es bash
2)通过docker desk,查看具体的容器,可以在docker desktop执行相关命令
在Terminal中可以执行相关的命令。
提示命名文件:直接回车,默认文件名elastic-stack-ca.p12文件(建议使用默认文件名)
提示输入密码:输入密码进行设置(也可以直接回车)
./bin/elasticsearch-certutil ca
提示命名文件,直接回车,默认文件名elastic-certificates.p12文件
提示输入密码:输入密码进行设置(也可以直接回车)
./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
进入docker容器后,默认所处目录为elasticsearch所在目录
mkdir config/certs
mv elastic-certificates.p12 config/certs/
keystore可以看成一个放key的库,key就是公钥,私钥,数字签名等组成的一个信息。truststore是放信任的证书的一个store。
truststore和keystore的性质是一样的,都是存放key的一个仓库,区别在于,truststore里存放的是只包含公钥的数字证书,代表了可以信任的证书,而keystore是包含私钥的。
1)执行以下命令。如果在创建证书的过程中加了密码,需要输入这个密码。每个节点都需要。
./bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
./bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password
./bin/elasticsearch-keystore add xpack.security.http.ssl.keystore.secure_password
./bin/elasticsearch-keystore add xpack.security.http.ssl.truststore.secure_password
2)检查config目录下keystore文件
cd config
1)打开docker desktop,进入到es容器。
2)在Files目录下找到elasticsearch.yml文件。(容器内文件绝对路径:/usr/share/elasticsearch/config/elasticsearch.yml)
3)修改配置文件内容,如下:
xpack.security.enabled: true
xpack.security.enrollment.enabled: true
xpack.security.http.ssl:
enabled: false
verification_mode: certificate
truststore.path: certs/elastic-certificates.p12
keystore.path: certs/elastic-certificates.p12
xpack.security.transport.ssl:
enabled: true
verification_mode: certificate
keystore.path: certs/elastic-certificates.p12
truststore.path: certs/elastic-certificates.p12
集群中的节点都按照上面的方式完成配置并启动后,就可以设置账号密码了。
1)es共有3个默认账户:
2)自动创建密码(elastic、kibana 、Logstash账号,密码均会重置)
./bin/elasticsearch-setup-passwords auto
3)手动输入密码(需要重置elastic、kibana 、Logstash账号密码)
./bin/elasticsearch-setup-passwords interactive
4)重置用户密码(随机密码)
./bin/elasticsearch-reset-password -u elastic
5)重置用户密码(指定密码)
./bin/elasticsearch-reset-password -u elastic -i
1)登录http://localhost:9200/,输入账号密码。展示es版本信息。
1)通过docker hub官网(https://hub.docker.com/)寻找 kibana镜像。
2)寻找合适的Kibana版本,这里选择8.7.1版本,与es版本保持一致
3)通过Windows的PowerShell命令,下载docker镜像
docker pull kibana:8.7.1
4)查看镜像
docker images
5)运行kibana(在PowerShell中执行时,需要把"/"移除)
docker run -d --name kibana \
-e ELASTICSERACH_HOSTS=http://es:9200 \
--network=es-net \
-p 5601:5601 \
kibana:8.7.1
6)运行参数详解
-d #容器后台运行
--name kibana #容器命名
-e ELASTICSERACH_HOSTS=http://es:9200 #设置es访问路径,因为es和kibana都部署在docker中,共享同一个es-net网络,所以可以通过容器名访问
--network es-net #执行容器运行网络
-p 5601:5601 #开放端口
kibana:8.7.1 #运行镜像和tag
9)查看容器运行情况
docker ps
1)找到kibana配置文件。(文件绝对路径:/usr/share/kibana/config/kibana.yml)
2)修改kibana配置如下:
elasticsearch.username: "kibana" #不能配置elastic用户,否则kibana启动会提示权限过高
elasticsearch.password: "******" #配置密码,重置密码请看:2.6、重置用户密码
elasticsearch.hosts: ["http://es:9200"] #es访问地址
3)重启kibana
4)登录kibana,http:localhost:5601/
https://github.com/medcl/elasticsearch-analysis-ik
这里选择最新版本v8.7.0下载,对应elasticsearch的v8.7.1。这里下载elasticsearch-analysis-ik-8.7.0.zip压缩包。
1)下载成功后,将elasticsearch-analysis-ik-8.7.0.zip解压放到数据卷目录es-plugins下。
2)重新启动es,系统提示"fatal exception while booting Elasticsearch",那是因为IK分词器中默认设置的版本与es的版本不一致
3)来到数据卷挂载目录,修改plugin-descriptor.properties配置文件的es版本信息,修改elasticsearch.version=8.7.1(本文es镜像版本为8.7.1),配置信息与es镜像版本一致。
4)使用docker desktop,重启es镜像,发现es镜像可以启动成功。
参考文献:
《龙叔学ES:Elasticsearch XPACK安全认证》