本文使用的电脑系统为win10家庭版。
关于wsl2和docker desktop
第一次使用docker时安装的是docker toolbox,遇到了无法挂载文件夹的问题,最近发现利用wsl2可以直接安装docker desktop,使用起来更加方便(貌似toolbox不好用,不更新了),wsl2全称windows subsystem for linux,是一个Windows中的Linux子系统,安装教程很多也很靠谱,安装好wsl2后其实看不出来多了什么东西,还要到Microsoft Store里搜索安装一个Ubuntu,有了这个终端界面就可以使用Linux系统了。
虽然只能在终端使用,但性能很好,启动很快,使用cd /mnt/c就可以访问C盘,同理访问其他盘,不需要再挂载文件夹,学习Linux十分方便。
有了wsl2以后安装docker就变得简单无脑了,下载Docker Desktop Installer双击安装即可。
然后打开cmd输入wsl --list --verbose可以看到当前wsl2下运行的环境,包括Ubuntu和docker desktop。
docker 安装elasticsearch
据说docker拉镜像会很慢,需要更改成国内镜像什么的,但我这里可以科学上网,直接在cmd中输入docker run -d -p 9200:9200 elasticsearch:6.5.0等待下载完成,这里-d应该是指后台运行,-p是端口映射,要把容器内端口和本机实际端口映射过来,elasticsearch使用9200端口,然后后面的版本号不能少。elasticsearch是一个分布式的免费开源搜索和分析引擎,反正先用起来慢慢就明白了,结果用不起来,在浏览器输入localhost:9200啥也没有,使用docker ps -a一看容器是处于EXITED状态,反复开启了几次都是开启后立刻关闭,给我整蒙了,通过docker logs 容器ID查看容器日志,发现max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144],最大虚拟内存空间不足,好嘛,把这个变量改大一点,查了查在cmd中输入
wsl -d docker-desktop
echo 262144 >> /proc/sys/vm/max_map_count
就可以了,管理容器其实直接在Docker Desktop软件中进行也ok,我这里还装了nginx。
至此再次访问localhost:9200就看到了下图。
elasticsearch如果直接安装要先配置Java环境,使用docker就十分方便,容器中已经搭建好了需要的环境和对应的应用,我认为这也是docker最大的优势。
elasticsearch使用
elasticsearch使用RESTful web接口,RESTful是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义,简单来说elasticsearch是一种REST服务,使用REST来管理其中的数据库。我这里使用的IDE是vscode,首先在vscode里安装一下REST Client插件,
创建一个文件xxx.http,然后在文件中输入POST来创建/修改数据,PUT也可以,但POST可以省略ID(自动生成随机id)。其中index表示database,type表示table,
POST/PUT http://localhost:9200/<index>/<type>/<id>
然后就可以使用GET来获取数据了,其中_search表示全文搜索,q表示属性值
GET http://localhost:9200/<index>/<type>/_search?q=xxx
各种elasticsearch rest api的操作可以参考这位博主的博客。
一个困惑
win10提示更新,更新好以后我的docker居然被删除了!!!幸好Docker Desktop Installer一直没删,重新安装以后,发现之前创建的容器都还在,还好还好。