在docker中安装es(单机版)

安装

如果不会安装docker可参考下边这篇博客

博客地址:http://www.geekfaith.com/article/173

docker run -d -p 9200:9200 -p 9300:9300 -v /opt/myapp/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v  /opt/myapp/elasticsearch/config/jvm.options:/usr/share/elasticsearch/config/jvm.options --name elasticsearch elasticsearch
  • -p:将docker镜像中的端口号映射宿主机器端口号,宿主机器端口号:docker容器端口号 ,可写多个,如果多个端口号是连续的,可以直接用-连接,如:4560-4600:4560-4600
  • -v:将docker镜像中的文件映射到宿主机器指定的文件,可以是文件夹,-v 宿主机文件:容器文件映射后可直接修改宿主机上的文件就可以改变docker中的配置,也可写多个。docker镜像中软件的配置文档默认在/usr/share”/{软件名}
  • –name:指定镜像名称,--name 容器名称

默认安装的是docker镜像中最新版本的es镜像,如果想要安装指定版本,需要先下载镜像,比如我想安装5.几版本的es
先通过docker下载该版本的镜像

docker pull elasticsearch:5.6.9

下载完镜像后再输入上边的安装命令,docker会使用已下载的镜像安装

碰到的问题

1.只能访问9200端口,在项目中不能使用9300端口操作

期初以为是防火墙给拦截,后台查看防火墙发现并未被拦截,检查docker容器中es的配置文件,容器目录(/usr/share/elasticsearch/config/elasticsearch.yml),使用vim查看文件发现只有一行配置

http.host: 0.0.0.0

这里只是设置了9200端口可以外网访问

还需要添加如下配置才能访问9300端口,添加后重启es即可访问

bootstrap.system_call_filter: false
network.bind_host: 0.0.0.0
network.publish_host: 填写docker容器的内网ip
network.host: 0.0.0.0

配置过9300端口外网启动后,启动es可能会报如下错误

ERROR: [2] bootstrap checks failed
ERROR: [2] bootstrap checks failed[1]: initial heap size [31457280] not equal to maximum heap size [480247808];
this can cause resize pauses and prevents mlockall from locking the entire heap[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to 	
at least [262144][2018-11-01T11:49:45,152][INFO ][o.e.n.Node               ] [qfspMqR] stopping ...2018-11-01 11:49:45,155 pool-1-thread-1 
ERROR Unable to unregister MBeans java.security.AccessControlException: access denied ("javax.management.MBeanServerPermission" "createMBeanServer")
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472) at 
java.security.AccessController.checkPermission(AccessController.java:884) at java.lang.SecurityManager.checkPermission(SecurityManager.java:549) at 
java.lang.management.ManagementFactory.getPlatformMBeanServer(ManagementFactory.java:465) at 
org.apache.logging.log4j.core.jmx.Server.unregisterLoggerContext(Server.java:246) at org.apache.logging.log4j.core.LoggerContext.stop(LoggerContext.java:338) 
at org.apache.logging.log4j.core.LoggerContext$1.run(LoggerContext.java:279) at 
org.apache.logging.log4j.core.util.DefaultShutdownCallbackRegistry$RegisteredCancellable.run(DefaultShutdownCallbackRegistry.java:109) at 
org.apache.logging.log4j.core.util.DefaultShutdownCallbackRegistry.run(DefaultShutdownCallbackRegistry.java:74) at java.lang.Thread.run(Thread.java:748)

这个是因为linux的单个进程的线程数不够,需要调大,临时加大的方法:

sysctl -w vm.max_map_count=262144

#查看修改结果
sysctl -a|grep vm.max_map_count
示例:
[root@localhost config]# sysctl -a|grep vm.max_map_count
vm.max_map_count = 262144

永久修改方法,按照如下命令一次输入:

cat /etc/sysctl.conf | grep -v "vm.max_map_count" > /tmp/system_sysctl.conf

echo "vm.max_map_count=262144" >> /tmp/system_sysctl.conf

mv /tmp/system_sysctl.conf /etc/sysctl.conf    #会提示是否覆盖,输入”y“即可
然后输入命令更新配置
cat /etc/sysctl.conf

sysctl -p
看上边的日志,可以发现还报一个错误
bootstrap checks failed[1]: initial heap size [31457280] not equal to maximum heap size [480247808];

因为服务器内存不够,es默认的jvm分配过多,修改/usr/share/elasticsearch/config/jvm.options(容器目录)的-Xms和-Xmx,默认是4g

-Xms256m
-Xmx256m

修改后重启即可使用

进入docker容器命令

docker exec -i -t 容器名 bash

docker中默认未安装vim编辑器,需要自己下载

apt-get install vim

如果安装时提示如下

Reading package lists... Done
        Building dependency tree       
        Reading state information... Done
        E: Unable to locate package vim

这时候需要敲:apt-get update,这个命令的作用是:同步/etc/apt/sources.list/etc/apt/sources.list.d中列出的源的索引,这样才能获取到最新的软件包。
然后再输入apt-get install vim就可安装成功

查看docker容器ip

docker inspect {容器名} | grep IPAddress

查看启动日志

docker logs -f --tail=10 {容器名称}

查看指定docker容器的日志,ctrl+c 结束查看

  • –tail:从倒数第几行开始查看
  • -f:带上日志时间查看
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值