我的编程空间,编程开发者的网络收藏夹
学习永远不晚

虚拟机中用Docker安装并启动了Elasticsearch,浏览器却访问不了

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

虚拟机中用Docker安装并启动了Elasticsearch,浏览器却访问不了

学习springCloud的过程及其痛苦,一直跟着黑马的视频走,但是随着技术栈的更新,许多技术的配置与黑马视频讲的会有出入,然后就会遇到一些很头疼的问题,有时候一个问题需要找很久的原因与解决方法,所以记录一下这些问题防忘吧(由于是尝试过程中解决了问题,没有截图,但说的还算详细)。

问题:

在学习到Elasticsearch时,我用docker安装并启动了Elasticsearch,前期过程挺顺利的,但是在用浏览器访问的时候出问题了,怎么也访问不到,提示拒绝访问。

解决过程:

1.防火墙问题:

网上大部分说的就是防火墙的问题,但是在刚学docker时,我就关闭了防火墙并且禁止了开机启动,给有需要的提供下命令吧:

firewall-cmd --state # 查看防火墙状态systemctl stop firewalld.service # 停止firewallsystemctl disable firewalld.service # 禁止firewall开机启动reboot # 重启虚拟机

2.max_map_count太小:

第二种比较多的说法是:max_map_count太小了,但是我修改了之后问题依然没有解决,命令如下:

先查看max_map_count值(一般是65530,但如果是262144就不用改):

cat /proc/sys/vm/max_map_count65530

修改65530为262144:

#临时修改sysctl -w vm.max_map_count=262144#永久修改vm.max_map_count=262144​

3.虚拟机内存不足以给ES分配:

还有说法是ES占用的内存比较多,如果虚拟机内存不足以分配给ES时会导致启动失败,解决方法:

#查看ES的容器id:docker ps -a #删除ES容器:docker rm + 容器id#新建ES容器(重点加上-e "ES_JAVA_OPTS=-Xms512m -Xmx512m"):docker run -d \--name es \-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \-e "discovery.type=single-node" \-v es-plugins:/usr/share/elasticsearch/plugins \-v /path/to/data/dir:/usr/share/elasticsearch/data \--network es-net \--privileged \-p 9200:9200 \-p 9300:9300 \elasticsearch:7.12.1

这个是黑马视频中说到过的,所以我也是加上的,对我的问题没有帮助。

正解:挂载点目录问题:

1.查看日志:

我在寻求方法时,偶然发现,这个命令可以查看Elasticsearch的日志:

# 查看最新日志(默认情况下使用-f选项)docker logs -f +容器id或者镜像名# 查看特定时间段内的日志:docker logs --since 2022-01-01 +容器id或者镜像名# 仅查看错误日志:docker logs --since 1d --grep ERROR +容器id或者镜像名

然后我查看了我的日志,发现在我浏览器访问ip:9200时,会出现这个错误并且此时我的容器会被自动删除:

ElasticsearchException[failed to bind service]; nested: FileSystemException[/usr/share/elasticsearch/data/nodes/0: Not a directory];Likely root cause: java.nio.file.FileSystemException: /usr/share/elasticsearch/data/nodes/0: Not a directory

2.尝试修复:

大致意思就是说我的挂载目录不存在,但是我单独创建了目录后,还是会报错:

uncaught exception in thread [main]ElasticsearchException[failed to bind service]; nested: AccessDeniedException[/usr/share/elasticsearch/data/nodes];Likely root cause: java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/nodes

然后我就针对目录做了一系列的我能想到的方法,但是都没解决问题。

3.正确方法:

无奈之下,我只能完全删除了Elasticsearch的镜像以及容器,重新安装,但是在安装之前先创建挂载点文件目录!

下面为docker安装Elasticsearch的完整步骤:

(1)创建一个网络,方便后期部署kibana:

docker network create es-net

(2)docker拉取Elasticsearch,不知道为什么在拉取Elasticsearch时,必须加tag,不能直接用latest:

# 必须选取一个tag,以7.12.1为例:docker pull elasticsearch:7.12.1

(3)创建搭载目录(重点!!!很多教程都没有)

mkdir -p /mydata/elasticsearch/configmkdir -p /mydata/elasticsearch/data# 将http.host: 0.0.0.0写入到es配置文件中,代表能被远程的任何机器访问:echo "http.host: 0.0.0.0" > /mydata/elasticsearch/config/elasticsearch.yml

(4)创建容器:

docker run -d \--name es \-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \-e "discovery.type=single-node" \-v es-plugins:/usr/share/elasticsearch/plugins \-v /path/to/data/dir:/usr/share/elasticsearch/data \--network es-net \--privileged \-p 9200:9200 \-p 9300:9300 \elasticsearch:7.12.1

解释:

-e "cluster.name=es-docker-cluster":设置集群名称

-e "http.host=0.0.0.0":监听的地址,可以外网访问

-e "ES_JAVA_OPTS=-Xms512m -Xmx512m":内存大小

-e "discovery.type=single-node":非集群模式

-v es-data:/usr/share/elasticsearch/data:挂载逻辑卷,绑定es的数据目录

-v es-plugins:/usr/share/elasticsearch/plugins:挂载逻辑卷,绑定es的插件目录

--privileged:授予逻辑卷访问权

--network es-net :加入一个名为es-net的网络中

-p 9200:9200:端口映射配置
(5)浏览器访问:虚拟机ip:9200,出现以下页面代表访问成功(edge浏览器出现的为json格式):

 问题解决!!!

总结:

这次的问题主要是,事前没有准备挂载点目录,其实黑马的视频和很多教程也没有这一步,所以绕了很大的弯子,花费很长时间的另一个原因是:我没有及时的查看日志,其实程序员遇到错误时第一项该做的就是查看日志,而我首先是去盲目的搜索答案了,也算让我长长记性吧。

日志错误可能和我不一样,可以在评论区发出来,只要我知道的就会回答的,不知道的留给随缘的大佬回答吧。

来源地址:https://blog.csdn.net/m0_56680022/article/details/129911541

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

虚拟机中用Docker安装并启动了Elasticsearch,浏览器却访问不了

下载Word文档到电脑,方便收藏和打印~

下载Word文档

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录