1.版本信息
通过 docker version 命令可以获取当前docker版本信息
Client:
Version: 1.13.1
API version: 1.26
Package version: docker-1.13.1-103.git7f2769b.el7.centos.x86_64
Go version: go1.10.3
Git commit: 7f2769b/1.13.1
Built: Sun Sep 15 14:06:47 2019
OS/Arch: linux/amd64
Server:
Version: 1.13.1
API version: 1.26 (minimum version 1.12)
Package version: docker-1.13.1-103.git7f2769b.el7.centos.x86_64
Go version: go1.10.3
Git commit: 7f2769b/1.13.1
Built: Sun Sep 15 14:06:47 2019
OS/Arch: linux/amd64
Experimental: false
2.部署elasticsearch镜像
2.1 搜索elasticsearch镜像
通过 docker search elasticsearch 命令搜索elasticsearch相关镜像
docker search elasticsearch
如下是部分搜索结果,OFFICIAL 表示是官方镜像
2.2 拉取elasticsearch镜像
通过 docker pull elasticsearch 命令拉取elasticsearch镜像,默认是latest版本
docker pull elasticsearch
拉取成功后,可以通过 docker images 确认镜像
docker images
2.3 创建elasticsearch挂载目录
mkdir -p /opt/elasticsearch/data \
/opt/elasticsearch/config \
/opt/elasticsearch/plugins \
/opt/elasticsearch/logs
- data 用于存储数据
- config 用于存储配置文件
- plugins 用于存储插件
- logs 用于日志文件
2.4 创建elasticsearch.yml配置文件
这里我们在/opt/elasticsearch/config目录下创建elasticsearch.yml
touch elasticsearch.yml
elasticsearch.yml文件内容如下:
http.host: 0.0.0.0
##集群名称 所有节点要相同
cluster.name: "sunce-es"
##本节点名称
node.name: master
##作为master节点
node.master: true
##是否存储数据
node.data: true
##设置可以访问的ip 这里全部设置通过
network.host: 0.0.0.0
http.port: 9200
network.bind_host: 0.0.0.0
##设置单节点
discovery.type: single-node
2.5 启动elasticsearch镜像
docker run -d -p 9200:200 -p 9300:9300 --name es \
-v /etc/localtime:/etc/localtime \
-v /opt/elasticsearch/config/elasticsearch.yml::/usr/share/elasticsearch/config/elasticsearch.yml \
-v /opt/elasticsearch/data:/usr/share/elasticsearch/data \
-v /opt/elasticsearch/plugins::/usr/share/elasticsearch/logs \
-v /opt/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
docker.elastic.co/elasticsearch/elasticsearch:7.4.2
- -d 表示后台运行
- -p 表示指定端口映射
- --name 表示指定名称
- -v 冒号前是挂载的本地文件目录,冒号后是容器内目录
3.下载中文分词插件ik分词器
3.1 进入es容器内
docker exec -it es /bin/bash
3.2 进入容器内bin目录,并下载插件
#切换至/bin目录下
cd /bin/
#下载ik分词器,这里注意对应es版本
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.4.2/elasticsearch-analysis-ik-7.4.2.zip
在容器环境内执行 exit 可以返回到宿主机环境
3.3 在宿主机备份分词器配置
复制容器es的分词器配置到宿主机环境
docker cp es:/usr/share/elasticsearch/config/analysis-ik /opt/elasticsearch/config/
- 'es:' 表示es容器环境下
3.4 停止并移除原有elasticsearch容器
通过 docker stop 容器名/Id命令可以停止正在运行的容器
docker stop es
通过 docker rm 容器名/Id命令可以移除停止状态的容器
docker rm es
3.5 使用新的启动参数重新启动
docker run -d -p 9200:9200 -p 9300:9300 --name es \
-v /etc/localtime:/etc/localtime \
-v /opt/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /opt/elasticsearch/config/analysis-ik:/usr/share/elasticsearch/config/analysis-ik \
-v /opt/elasticsearch/data:/usr/share/elasticsearch/data \
-v /opt/elasticsearch/logs:/usr/share/elasticsearch/logs \
-v /opt/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
docker.elastic.co/elasticsearch/elasticsearch:7.4.2
4.常见问题
4.1 常见错误一
错误描述
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
错误解决
# 设置/etc/sysctl.conf:
vm.max_map_count=262144
# 执行以下命令,可以立即生效
sysctl -w vm.max_map_count=262144
4.2 常见错误二
错误描述
the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
错误解决
# 设置elasticsearch.yml
discovery.type: single-node
作者是一个技术肥宅,还在不断的学习进步中,十分欢迎各位 杠精 读者指出文中不足之处,快来给我留言吧;欢迎转载,烦请注明出处。
- 本文链接: https://www.sunce.wang/archives/docker部署elasticsearch指南
- 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!