记一次 本地 docker 拉去 ES 和 ES-head 镜像运行容器的坑…
1. 安装 Dokcer
安装 docker 很简单 自己去官网安装下载便是,这里不再多说。
2. 拉去对应的镜像
当你有想要拉取得应用名称,即为镜像名称你可以运行如下命令:
docker search elasticsearch
其中 OFFICIAL 表示官方推荐的。
而 AUTOMATED 表示 自动化构建。
我们选择第一个进行拉取镜像:
docker pull elasticsearch
这个命名你可以在后面指定版本号,如果不指定默认拉取最新的版本
同理我们把另外一个镜像也顺带拉取下来:
docker pull elasticsearch-head
这个镜像的功能是一个 ES 的 UI 界面程序,能够很方便的查看你存入ES 内的数据情况。
拉取成功后 我们再看看本地是否已经存在了:
docker images // or docker image ls
恩,完美的存在。
3. 运行容器-修改容器内相应的配置文件
第一步: 运行容器
docker run -d -p 127.0.0.1:9200:9200 elasticsearch
-d 表示打印出容器ID。
-P 表示将容器的9200端口 映射到本地的 9200端口以便于浏览器可以访问。
同理我们可以把另外一个镜像运行起来:
docker run -d -p 9200:9200 elasticsearch-head
第二步:查看运行的容器
docker ps
这个命令可以查看所有正在运行着的容器:
注意:上图最后一个字段 NAME 就是下面 “进入容器” 要用到的参数!
这个时候按理来说 两个镜像容器都已经运行起来,那么我们就可以直接打开浏览器直接访问操作即可,结果失败报错了!
跨域请求失败报错如下:
Failed to load http://localhost:9200/: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:9100' is therefore not allowed access.
app.js:1308
````
### 第二步:进入容器内部
> 跨域问题存在,原来ES 默认是不允许跨域的,所以我们应该进入它的系统文件找到 配置文件进行配置。
#### 01:
docker exec -it <names> /bin/sh
这里的<name> 就是上面提到的 NAME:
docker exec -it angry_wozniak /bin/sh
#### 注意 这里其实你也可以用:
ddocker attach angry_wozniak 或者 docker exec -it d48b21a7e439 /bin/sh
但是这个一旦退出,就是连带容器也停止。
#### 02:
找到 elasticsearch.yml 文件然后
```shell
vi elasticsearch.yml
在使用docker容器时,有可能没有安装Vi, 安装Vi:apt-get install vim,如果提示:Unable to locate package vim,则需要敲:apt-get update, 等更新完毕以后再敲命令: apt-get install vim
加入以下代码即可:
http.cors.enabled: true
http.cors.allow-origin: "*
第三步: 重启容器
docker restart <容器ID>
搞定!
4. 可以选择elasticsearch-hq
这么插件,界面较为友好优美,操作也较为简单明了。
docker pull elastichq/elasticsearch-hq