Win10中Docker安装Elasticsearch

上文: win10安装docker入门

在进行以下操作之前,我们需要先通过Docker设置一个共享的驱动器,为什么要先设置呢,因为Win10的权限要求比较高,不允许软件自行共享文件夹。
接下来我们来看Win10如何设置共享数据卷,首先鼠标右击任务栏右下角的Docker小图标,然后选择Settings...菜单,在弹出的界面中点击Shared Drivers选项卡,在右侧勾选需要共享的驱动器(此时有可能会弹框让你输入系统的用户名和密码),接着点击Apply按钮即可。如下图所示:


图片.png

另外要确保为docker分配的资源足够,刚开始不才为docker分配的资源很少,结果出现很卡的情况。现在的设置如下:


图片.png

1.搜索elasticsearch

C:\Users\Administrator>docker search elasticsearch:5.6.8

2.下载elasticsearch镜像

C:\Users\Administrator>docker pull elasticsearch:5.6.8

3.创建容器

docker run -di --name=myes -p 9200:9200 -p 9300:9300 elasticsearch

说明如下:

  • -d: 后台运行容器,并返回容器ID;
  • -i: 以交互模式运行容器,通常与 -t 同时使用;
  • --name=tensquare_es:将容器命名为my_es
  • -p: 端口映射,格式为:主机(宿主)端口:容器端口

4.浏览器输入地址:http://127.0.0.1:9200/即可看到如下信息:

(由于不才的docker是安装在本机上的,所以这里是127.0.0.1)


图片.png

5.SpringBoot应用报错

此时,不才的SpringBoot中的yaml设置如下:

spring:
  data:
    elasticsearch:
      cluster‐nodes: 127.0.0.1:9300

运行测试程序,发现会报如下错误:

NoNodeAvailableException[None of the configured nodes are available:
[{#transport#‐1}{exvgJLR‐RlCNMJy‐hzKtnA}{127.0.0.1}
{127.0.0.1:9300}]
]
at
org.elasticsearch.client.transport.TransportClientNodesService.ensureNodes
AreAvailable(TransportClientNodesService.java:347)
at
org.elasticsearch.client.transport.TransportClientNodesService.execute(Tra
nsportClientNodesService.java:245)
at
org.elasticsearch.client.transport.TransportProxyClient.execute(TransportP
roxyClient.java:59)

这是因为elasticsearch从5版本以后默认不开启远程连接,需要修改配置文件

6.我们进入容器

C:\Users\Administrator>docker exec -it my_es /bin/bash
root@fe7ebf1c90bf:/usr/share/elasticsearch# ls
NOTICE.txt  README.textile  bin  config  data  lib  logs  modules  plugins
root@fe7ebf1c90bf:/usr/share/elasticsearch# cd config
root@fe7ebf1c90bf:/usr/share/elasticsearch/config# ls
elasticsearch.yml  log4j2.properties  scripts
root@fe7ebf1c90bf:/usr/share/elasticsearch/config# pwd
/usr/share/elasticsearch/config
root@fe7ebf1c90bf:/usr/share/elasticsearch/config# exit
exit

此时,我们看到elasticsearch所在的目录为/usr/share/elasticsearch ,进入config看到了配置文件:elasticsearch.yml
我们通过vi命令编辑此文件,尴尬的是容器并没有vi命令 ,咋办?
思路一:我们可以采用文件挂载的方式创建容器,这样我们就可以通过修改宿主机中的某个文件来实现对容器内配置文件的修改。
思路二:当然也可以先修改后拷贝进去,然后重启容器。
以下采用的是思路一的方案:

7.拷贝配置文件到宿主机

C:\Users\Administrator>d:
因为共享的驱动器为D盘,所以这里先进入D盘
D:\>docker cp myes:/usr/share/elasticsearch/config/elasticsearch.yml D:/docker/elasticsearch.yml

这里如果不能直接cp到D盘,可通过挂载方式:docker run 命令中使用-v 参数,例如 -v D:/docker:/docker ,将D盘文件夹挂载到容器的/docker目录,此时两者指向同一地址,可以通过/docker间接完成任务,进入容器后通过df -h命令可以看到。

8.停止和删除原来创建的容器

docker stop myes
docker rm myes

9.重新执行创建容器命令

D:\>docker run -di --name=myes -p 9200:9200 -p 9300:9300 -v D:/docker/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml elasticsearch

这里将D:/docker/elasticsearch.yml挂载到/usr/share/elasticsearch/config/elasticsearch.yml,也就是说修改D:/docker/elasticsearch.yml的内容就相当于修改myes容器的/usr/share/elasticsearch/config/elasticsearch.yml文件。

10.修改D:/docker/elasticsearch.yml文件

将 transport.host: 0.0.0.0 前的#去掉后保存文件退出。其作用是允许任何ip地址访问elasticsearch .开发测试阶段可以这么做,生产环境下指定具体的IP。


修改前.png

修改后.png

11.重启容器

docker restart myes

再次测试程序,正常运行。
至此,Win10中Docker安装Elasticsearch完成。

下文: Docker安装IK分词器

下文: Docker安装elasticsearch‐head

你可能感兴趣的:(Win10中Docker安装Elasticsearch)