在基于win10.wsl2的docket桌面版中安装Elasticsearch、Kibana、Nginx和Redis
学习阶段,仅供参考
安装docker
- 安装
docker桌面版官网下载
安装过程中会提示你下载并安装wsl2。
docker的提示链接:wsl2安装
应该是只要步骤4,其他什么都不用配置。
-
配置国内镜像地址
如下位置添加源地址 “https://vw9qapdy.mirror.aliyuncs.com”
docker自定义网络,用于绑定固定IP
下列内容只涉及ip,不操作不影响容器安装,ip也可以安装完容器后修改。
docker启动多个容器时,会根据启动顺序注册容器对应的ip,所以每次重新启动docker,容器ip可能会变动(当然,如果你每次启动所有容器的先后顺序一样,那容器对应的ip地址应该也是一样的)。保险起见,可以先在docker自定义网络,用于绑定固定ip。
docker network ls //查看网络
docker network create --subnet=172.20.0.0/15 extnetwork //自定义网络,网段:172.20.0.0/15,自定义名字:extnetwork
创建容器时利用如下命令指定ip:
--net extnetwork --ip 172.20.0.2
安装Elasticsearch
-
拉取镜像
cmd或powershell下docker pull elasticsearch:7.4.2
-
创建容器
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 //端口 -e discovery.type=single-node //单节点运行 -e ES_JAVA_OPTS="-Xms64m -Xmx512m" //设置内存 -v D:\xxx\elasticsearch\config\elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v D:\xxx\elasticsearch\data:/usr/share/elasticsearch/data -v D:\xxx\elasticsearch\plugins:/usr/share/elasticsearch/plugins //-v 为文件挂载,win10系统的三个文件夹请之前自行新建,没有的话理论上也会帮你新建 --net extnetwork --ip 172.20.0.2 //指定网络和ip,172.20.0.1为网关,不可用;没有这行的话就是docker分配ip -d elasticsearch:7.4.2
-
配置网络
打开自定义的D:\xxx\elasticsearch\config\elasticsearch.yml,输入network.host: 0.0.0.0(本人一开始连不上es,百度后这样解决了我的问题) -
查验
可以直接点开桌面版及容器inspect(详情)查看,或者:docker ps //查找所有容器,及其id
NTAINER ID IMAGE … xxxxxxxxx elasticsearch … docker exec -it 上述id或容器名 /bin/bash //进入es容器根目录,成功如下:(也可以在桌面版的容器的cli进入)
[root@09b0c25129c3 elasticsearch]#
[root@09b0c25129c3 elasticsearch]# ls //查看所有文件
LICENSE.txt NOTICE.txt README.textile bin config data jdk lib logs modules plugins
data和plugins变色表明挂载成功docker inspect elasticsearch //查看es容器详情、ip、以及是否挂载成功
在"NetworkSettings"里面的"IPAddress": "172.20.0.2"查看ip
在"Mounts"查看是否挂载成功 -
安装ik中文分词器
链接:下载对应版本
下载后解压ZIP,将整个文件夹放在之前的D:\xxx\elasticsearch\plugins文件中。
安装Kibana
- 拉取镜像
docker pull kibana:7.4.2
- 创建容器
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://172.20.0.2:9200 // 172.20.0.2为我的esip地址 -p 5601:5601 --net extnetwork --ip 172.20.0.3 -d kibana:7.4.2
安装Nginx
- 拉取镜像
docker pull nginx:1.10
- 创建工具容器,以复制配置文件
2.1. 创建工具容器:
2.2. 将nginx容器的conf.d文件夹拷贝到win10的 xxx\nginx\conf文件夹下,conf文件夹请在此之前自行新建:docker run --name nginx -p 80:80 -d nginx:1.10
2.3. 将nginx容器的nginx.conf文件拷贝到xxx\nginx\conf文件夹下docker container cp nginx:/etc/nginx/conf.d D:\xxx\nginx\conf\
docker container cp nginx:/etc/nginx/nginx.conf D:\xxx\nginx\conf\
至于为什么不直接用命令复制nginx:/etc/nginx/下的所有文件,
是因为我在执行docker container cp nginx:/etc/nginx/* D:\xxx\nginx\conf\ 时,
里面的modules文件复制出现问题,因此退而求其次,只复制必要的这两个配置文件 - 删除刚才的nginx容器
- 创建真正要的Nginx容器
docker run --name nginx -p 80:80 -v D:\xxxx\mydata\nginx\html:/usr/share/nginx/html -v D:\xxxx\mydata\nginx\logs:/var/log/nginx -v D:\xxxx\mydata\nginx\conf\conf.d:/etc/nginx/conf.d -v D:\xxxx\mydata\nginx\conf\nginx.conf:/etc/nginx/nginx.conf //win10下的html、logs文件夹请自行创建(logs应该可以不用挂载了,毕竟docker桌面版可以直接看日志) --net extnetwork --ip 172.20.0.4 -d nginx:1.10
安装Redis
- 拉取镜像
docker pull redis
- 在windows本地创建redis配置文件以方便挂载,如xxxx\mydata\redis\conf\redis.conf。
- 创建容器
docker run -p 6379:6379 --name redis -v D:\xxxx\mydata\redis\data:/data -v D:\xxxx\mydata\redis\conf\redis.conf:/etc/redis/redis.conf -d redis redis-server /etc/redis/redis.conf //以配置文件运行
- 持久化设置
默认redis数据是不持久化的,在配置文件redis.conf中输入appendonly yes,就可以aof持久化了。
安装RabbitMQ
docker run -d --name rabbitmq -p 5671:5671 -p 5672:5672 -p 4369:4369 -p 25672:25672 -p 15671:15671 -p 15672:15672 rabbitmq:management
//4369,25672(Erlang发现&集群端口)
//5672,5671(AMQP端口)
//15672 (web管理后台端口)
//61613,61614(STOMP协议端口)
//1883,8883(MQTT协议端口)
参考文档:https://www.rabbitmq.com/networking.html