1、拉取镜像文件
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker pull elasticsearch:6.7.1
2、创建配置文件
[root@iZ2zeir6vcnpz8qw3t455tZ config]# mkdir -p /ES/config/
[root@iZ2zeir6vcnpz8qw3t455tZ config]# ls
es1.yml es2.yml
es1.yml
# es1.yml
cluster.name: ELK-elasticsearch
node.name: node-1
network.host: 0.0.0.0
network.publish_host: 123.56.83.80
http.port: 9200# 设置对外服务的http端口,默认为9200
transport.tcp.port: 9300# 设置节点之间交互的tcp端口,默认是9300。如我搭建多节点,可以配置9300、9302、9304
# 以下两行是提供跨域访问的配置方法
http.cors.enabled: true
http.cors.allow-origin: "*"
# 指定该节点是否有资格被选举成为node(注意这里只是设置成有资格, 不代表该node一定就是master),默认是true,es是默认集群中的第一台机器为master,如果这台机挂了就会重新选举master
node.master: true
# 指定该节点是否存储索引数据,默认为true
node.data: true
# 设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点
discovery.zen.ping.unicast.hosts: ["123.56.83.80:9300","123.56.83.80:9301"]
# 设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)
discovery.zen.minimum_master_nodes: 1
es2.yml
[root@iZ2zeir6vcnpz8qw3t455tZ config]# cat es2.yml
cluster.name: ELK-elasticsearch
node.name: node-1
network.host: 0.0.0.0
network.publish_host: 123.56.83.80
http.port: 9201# 设置对外服务的http端口,默认为9200
transport.tcp.port: 9301# 设置节点之间交互的tcp端口,默认是9300。如我搭建多节点,可以配置9300、9302、9304
# 以下两行是提供跨域访问的配置方法
http.cors.enabled: true
http.cors.allow-origin: "*"
# 指定该节点是否有资格被选举成为node(注意这里只是设置成有资格, 不代表该node一定就是master),默认是true,es是默认集群中的第一台机器为master,如果这台机挂了就会重新选举master
node.master: true
# 指定该节点是否存储索引数据,默认为true
node.data: true
# 设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点
discovery.zen.ping.unicast.hosts: ["123.56.83.80:9300","123.56.83.80:9301"]
# 设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)
discovery.zen.minimum_master_nodes: 1
3、分别创建二个容器
docker run -eES_JAVA_OPTS="-Xms256m -Xmx256m"-d-p9200:9200 -p9300:9300 -v/ES/config/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml --nameES01 e2667f5db289
docker run -eES_JAVA_OPTS="-Xms256m -Xmx256m"-d-p9201:9201 -p9301:9301 -v/ES/config/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml --nameES02 e2667f5db289
4、查看容器状态
[root@iZ2zeir6vcnpz8qw3t455tZ config]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d87ec42b203b e2667f5db289 "/usr/local/bin/dock…" 2minutes ago Exited (78) About a minute ago ES02
6d9c9931538a e2667f5db289 "/usr/local/bin/dock…" 2minutes ago Exited (78) About a minute ago ES01
发现没有启动起来:原因是es特别消耗内存,我的云主机是1G内存,资源太低,导致服务起不来。生产环境中不能使用root用户操作,这里只是为了方便:
查看日志
[root@iZ2zeir6vcnpz8qw3t455tZ config]# docker logs -f ES01
ERROR: [1] bootstrap checks failed
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
修改配置文件
[root@iZ2zeir6vcnpz8qw3t455tZ config]# vim /etc/sysctl.conf
# 最后一行添加
vm.max_map_count =655360
现在docker还没有生效,我们要把docker删除,重新建
[root@iZ2zeir6vcnpz8qw3t455tZ config]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d87ec42b203b e2667f5db289 "/usr/local/bin/dock…" 14minutes ago Exited (78) 13minutes ago ES02
6d9c9931538a e2667f5db289 "/usr/local/bin/dock…" 14minutes ago Exited (78) 13minutes ago ES01
[root@iZ2zeir6vcnpz8qw3t455tZ config]# docker rm ES01
ES01
[root@iZ2zeir6vcnpz8qw3t455tZ config]# docker rm ES02
ES02
[root@iZ2zeir6vcnpz8qw3t455tZ config]#
docker run -eES_JAVA_OPTS="-Xms256m -Xmx256m"-d-p9200:9200 -p9300:9300 -v/ES/config/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml --nameES01 e2667f5db289
[root@iZ2zeir6vcnpz8qw3t455tZ config]#
docker run -eES_JAVA_OPTS="-Xms256m -Xmx256m"-d-p9201:9201 -p9301:9301 -v/ES/config/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml --nameES02 e2667f5db289
5、安装管理界面
[root@iZ2zeir6vcnpz8qw3t455tZ config]# docker pull mobz/elasticsearch-head:5
6、创建容器
[root@iZ2zeir6vcnpz8qw3t455tZ config]# docker run -d --name es_admin -p 9100:9100 mobz/elasticsearch-head:5
7、查看容器
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
22f2830b8cd1 mobz/elasticsearch-head:5 "/bin/sh -c 'grunt s…" 16hours ago Up 16hours 0.0.0.0:9100->9100/tcp es_admin
fe62587fe232 e2667f5db289 "/usr/local/bin/dock…" 16hours ago Up 16hours 9200/tcp, 0.0.0.0:9201->9201/tcp, 9300/tcp, 0.0.0.0:9301->9301/tcp ES02
6f39301f74af e2667f5db289 "/usr/local/bin/dock…" 16hours ago Up 16hours 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp ES01
81f99fbc94de portainer/portainer "/portainer" 18hours ago Up 17hours 0.0.0.0:9000->9000/tcp portainer-arry
8、解决索引报错
参考:https://www.psvmc.cn/article/2019-11-27-elasticsearch.html
1.进入docker
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker exec -it es_admin /bin/bash
root@22f2830b8cd1:/usr/src/app# ls
Dockerfile grunt_fileSets.js
Gruntfile.js index.html
LICENCE node_modules
README.textile package.json
_site plugin-descriptor.properties
elasticsearch-head.sublime-project src
elasticsearch-head.sublime-workspace test
root@22f2830b8cd1:/usr/src/app# cd _site/
root@22f2830b8cd1:/usr/src/app/_site# ls
app.css app.js base fonts i18n.js index.html lang vendor.css vendor.js
root@22f2830b8cd1:/usr/src/app/_site# vim vendor.js
bash: vim: command not found
2.安装vim
root@22f2830b8cd1:/usr/src/app/_site# apt-get update
root@22f2830b8cd1:/usr/src/app/_site# apt-get install vim
3.按ESC
输入:6886
跳转到6886行
把contentType: "application/x-www-form-urlencoded"改为 contentType: "application/json"
4.退出容器
root@22f2830b8cd1:/usr/src/app/_site# exit
5.重启容器
[root@iZ2zeir6vcnpz8qw3t455tZ config]# docker restart es_admin
6.再次创建索引
如果文章有任何错误欢迎不吝赐教,其次大家有任何关于运维的疑难杂问,也欢迎和大家一起交流讨论。关于运维学习、分享、交流,笔者开通了微信公众号【运维猫】,感兴趣的朋友可以关注下,欢迎加入,建立属于我们自己的小圈子,一起学运维知识。群主还经营一家Orchis饰品店,喜欢的小伙伴欢迎????前来下单。
扫描二维码
获取更多精彩
运维猫公众号
有需要技术交流的小伙伴可以加我微信,期待与大家共同成长,本人微信:
扫描二维码
添加私人微信
运维猫博主
扫码加微信
最近有一些星友咨询我知识星球的事,我也想继续在星球上发布更优质的内容供大家学习和探讨。运维猫公众号平台致力于为大家提供免费的学习资源,知识星球主要致力于即将入坑或者已经入坑的运维行业的小伙伴。
点击阅读原文 查看更多精彩内容!!!