You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何在Docker容器中安装指定版本Elasticsearch 6.1.1

解决Docker容器中安装Elasticsearch 6.1.1的问题

我来帮你搞定这个Docker容器里安装指定版本Elasticsearch 6.1.1的问题~因为默认的6.x源会自动拉取该分支下的最新版本(比如你遇到的6.2.4),所以我们可以通过两种方式来锁定安装6.1.1版本:

方法1:直接使用官方指定版本镜像(最省心)

Elastic官方已经为每个版本的ES提供了预构建的Docker镜像,你完全不需要自己从头构建,直接在运行容器或者docker-compose配置里指定标签6.1.1即可:

用docker run直接启动

docker run -d --name es-6.1.1 elasticsearch:6.1.1

用docker-compose部署(推荐用于多服务场景)

version: '3'
services:
  elasticsearch:
    image: elasticsearch:6.1.1
    ports:
      - "9200:9200"
      - "9300:9300"
    environment:
      - discovery.type=single-node  # 单节点模式,避免集群发现报错

这个方法的优势是官方镜像已经配置好了所有依赖和基础环境,能帮你避开很多手动构建时的坑。

方法2:自定义Dockerfile构建指定版本

如果你一定要基于基础镜像手动构建,那需要在APT安装时明确锁定版本号,避免自动拉取6.x分支的最新版本。以下是完整的Dockerfile示例:

# 选择兼容的基础镜像,比如debian:stretch
FROM debian:stretch

# 安装依赖并添加Elastic官方的APT密钥
RUN apt-get update && apt-get install -y apt-transport-https curl && \
    curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -

# 添加Elastic的6.x APT源
RUN echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" > /etc/apt/sources.list.d/elastic.list

# 更新源并安装指定版本的Elasticsearch 6.1.1
RUN apt-get update && apt-get install -y elasticsearch=6.1.1

# 配置单节点模式(可选,避免启动时集群发现报错)
RUN echo "discovery.type: single-node" >> /etc/elasticsearch/elasticsearch.yml

# 暴露ES的默认端口
EXPOSE 9200 9300

# 启动Elasticsearch
CMD ["/usr/share/elasticsearch/bin/elasticsearch"]

这里的关键是在apt-get install命令后加上=6.1.1,强制APT安装指定版本,而不是该分支下的最新版。

额外注意事项

  • 如果之前拉过ES相关的镜像或者有APT缓存,建议构建时加上--no-cache参数,避免缓存影响版本安装:
    docker build --no-cache -t my-es-6.1.1 .
    
  • ES 6.x版本需要调整宿主机的虚拟内存参数,否则启动可能报错:
    sysctl -w vm.max_map_count=262144
    
    (如果是生产环境,建议把这个参数写入/etc/sysctl.conf永久生效)

内容的提问来源于stack exchange,提问作者user7422128

火山引擎 最新活动