记录docker启动elasticsearch时内存不足问题及解决方法

文章描述了在腾讯云服务器上使用Docker部署Elasticsearch(ES)遇到的问题,容器状态持续为restarting,日志显示OpenJDK内存分配失败。解决方案是找到jvm.options文件,调整-Xms参数,降低内存分配,例如从1G改为256m,然后保存更改并重启容器,以此来解决因内存不足导致的错误。

腾讯云服务器docker部署es,容器状态一直为restarting, docker logs 容器id --> 查看容器日志,显示报错

OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00007ebf15330000, 549668585472, 0) failed; error='Not enough space' (errno=12)

解决方法

1.查找jvm.options文件位置(每个服务器的位置可能不同)
2.修改jvm.options文件配置
在这里插入图片描述
在这里插入图片描述
找到-Xms属性,这里默认是1g,我改成256m,wq保存退出

保存并退出

vim中按i进入编辑模式,按ESC退出编辑模式,按:进入命令模式,然后在底部命令行输入w为保存,q为退出,q!为强制退出。

重启容器后测试
在这里插入图片描述
解决参考

### 使用 Docker 启动 Elasticsearch方法 通过 Docker 启动 Elasticsearch 是一个常见的操作,以下是具体的方法和配置: #### 1. 拉取官方 Elasticsearch 镜像 首先需要从 Docker 官方仓库拉取最新的 Elasticsearch 镜像。可以使用以下命令完成: ```bash docker pull docker.elastic.co/elasticsearch/elasticsearch:7.17.0 ``` 此命令会下载指定版本的 Elasticsearch 镜像[^3]。 #### 2. 创建并运行 Elasticsearch 容器 接下来,使用 `docker run` 命令启动容器,并设置必要的环境变量和端口映射。以下是完整的命令示例: ```bash docker run -d \ --name elasticsearch \ -p 9200:9200 \ -p 9300:9300 \ -e "discovery.type=single-node" \ -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \ docker.elastic.co/elasticsearch/elasticsearch:7.17.0 ``` - `-p 9200:9200` 和 `-p 9300:9300`:将主机的 9200 和 9300 端口映射到容器中的对应端口。 - `-e "discovery.type=single-node"`:指定单节点模式,适用于开发环境或测试用途。 - `-e "ES_JAVA_OPTS=-Xms512m -Xmx512m"`:设置 JVM 堆内存大小为 512MB,可根据实际需求调整。 #### 3. 配置文件的挂载(可选) 如果需要自定义 Elasticsearch 的配置文件,可以通过挂载本地文件实现。例如: ```bash docker cp ./elasticsearch.yml es:/usr/share/elasticsearch/config/elasticsearch.yml ``` 此命令将本地的 `elasticsearch.yml` 文件复制到容器内的指定路径[^2]。也可以直接在 `docker run` 命令中使用 `-v` 参数挂载配置文件。 #### 4. 数据持久化(可选) 为了确保数据不会因容器重启而丢失,可以挂载本地目录作为数据存储路径。例如: ```bash docker run -d \ --name elasticsearch \ -p 9200:9200 \ -p 9300:9300 \ -e "discovery.type=single-node" \ -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \ -v /path/to/your/local/elasticsearch/data:/usr/share/elasticsearch/data \ docker.elastic.co/elasticsearch/elasticsearch:7.17.0 ``` 上述命令中的 `-v` 参数将本地目录 `/path/to/your/local/elasticsearch/data` 挂载到容器内的 `/usr/share/elasticsearch/data` 目录。 #### 5. 插件安装(可选) 如果需要安装额外的插件,例如 `elasticsearch-sql`,可以进入容器后执行安装命令。步骤如下: 1. 进入容器: ```bash docker exec -it <容器ID> /bin/bash ``` 2. 安装插件: ```bash ./bin/elasticsearch-plugin install https://github.com/NLPchina/elasticsearch-sql/releases/download/5.6.4.0/elasticsearch-sql-5.6.4.0.zip ``` 3. 重启容器以使插件生效: ```bash docker restart <容器ID> ``` ### 注意事项 - 确保主机的资源(如 CPU 和内存)足够支持 Elasticsearch 的运行。 - 在生产环境中,建议使用更复杂的配置,例如集群模式、日志记录和监控工具[^1]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值