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 表示是官方镜像
搜索结果.png

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

作者是一个技术肥宅,还在不断的学习进步中,十分欢迎各位 杠精 读者指出文中不足之处,快来给我留言吧;欢迎转载,烦请注明出处。