注意:Elasticsearch从6.8开始, 允许免费用户使用X-Pack的安全功能, 以前安装es都是裸奔。接下来记录配置安全认证的方法。

1. 获取镜像

  1. # 查看可用的稳定版本
  2. sudo docker search elasticsearch
  3. sudo docker pull docker.elastic.co/elasticsearch/elasticsearch:7.6.2
  4. #sudo docker pull elasticsearch:6.7.0
  5. sudo docker image ls |grep elasticsearch

2. ES配置

  1. sudo rm -rf /share/es762.yml
  2. sudo vi /share/es762.yml

配置如下:

  1. cluster.name: "docker-es-cluster"
  2. # es-6.7.0需注释cluster.initial_master_nodes
  3. cluster.initial_master_nodes: ["node-1"]
  4. network.host: 0.0.0.0
  5. node.name: node-1
  6. http.host: 0.0.0.0
  7. http.cors.enabled: true
  8. http.cors.allow-origin: "*"
  9. bootstrap.memory_lock: false
  10. bootstrap.system_call_filter: false

3. 启动容器

# es-6.7.0
#docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -v /share/es670.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /var/docker/elastic/data:/data -p 9200:9200 -p 9300:9300 --name es670 elasticsearch:6.7.0
# es-7.6.2
docker run -d --name=es762 \
  -v /share/es762.yml:/usr/share/elasticsearch/config/elasticsearch.yml  \
  --privileged=true  \
  -p 9200:9200  \
  -p 9300:9300  \
  docker.elastic.co/elasticsearch/elasticsearch:7.6.2
sudo docker ps -a |grep es762
sudo docker start es762
sudo docker restart es762
sudo docker stop es762
sudo docker rm es762

4. 插件安装

1. Head插件

sudo docker pull docker.io/tobias74/elasticsearch-head
sudo docker run -id --name es762-head  \
  -p 9100:9100  \
  docker.io/tobias74/elasticsearch-head
sudo docker ps -a |grep es762-head
sudo docker start es762-head
sudo docker restart es762-head
sudo docker stop es762-head
sudo docker rm es762-head

2. ElasticHD插件

sudo docker pull containerize/elastichd
sudo docker run -d --name es762-hd \
  -p 9800:9800  \
  --link es762  \
  containerize/elastichd
sudo docker ps -a |grep es762-hd
sudo docker start es762-hd
sudo docker restart es762-hd
sudo docker stop es762-hd
sudo docker rm es762-hd

3. 分词插件

sudo docker exec -it es762 /bin/bash
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.2/elasticsearch-analysis-ik-7.6.2.zip

5. 错误修复

  1. 错误:“**max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]**”

解决方案1(临时):

sudo sysctl -w vm.max_map_count=262144

解决方案2(永久):

sudo vi /etc/sysctl.conf

添加配置:

vm.max_map_count=262144

修改完成后执行:

sudo sysctl -p
  1. 错误:“**bootstrap checks failed**”

解决方案:

sudo vi /etc/security/limits.conf

添加配置:

*               soft    nofile            65536
*               hard    nofile            65536

6. 验证

# 查看容器状态
sudo docker ps -a |grep es762
sudo docker ps -a |grep -E 'es762|es762-head|es762-hd'
# 进入终端
sudo docker exec -it es762 /bin/bash
# 查看日志
sudo docker logs -f -t --tail=50 es762
# 查看网络
sudo docker network ls
sudo docker inspect es762
# 查看端口
netstat -lnp|grep 9100
netstat -lnp|grep 9200

ES

docker commit -a “polaris450733605@qq.com“ -m “This is backup for elasticsearch:7.6.2” es762 tmp-elasticsearch:v7.6.2

Head插件

docker commit -a “polaris450733605@qq.com“ -m “This is backup for elasticsearch-head” es762-head my-elasticsearch-head:latest

ElasticHD插件

docker commit -a “polaris450733605@qq.com“ -m “This is backup for elasticsearch-hd” es762-hd my-elasticsearch-hd:latest

<a name="cEH5l"></a>
## 2. 数据卷备份
**_备份镜像时外挂数据卷无法加载到镜像中,可通过Dockfile构建的方式进行文件添加。_**

- **编辑Dockerfile**
```bash
cd /share
vi es762.Dockerfile

内容如下:

FROM tmp-elasticsearch:v7.6.2
MAINTAINER polaris "450733605@qq.com"
ADD es762.yml /usr/share/elasticsearch/config/elasticsearch.yml
  • 构建镜像

    docker build -f es762.Dockerfile -t my-elasticsearch:v7.6.2 .
    docker images | grep my-elasticsearch
    

    3. 打包镜像

  • 独立打包

    # 导出ES镜像(镜像:830MB,压缩包:803MB)
    docker save -o docker-elasticsearch-7.6.2-solo.save.tar my-elasticsearch:v7.6.2
    # Head插件(镜像:812MB,压缩包:810MB)
    docker save -o docker-elasticsearch-head-7.6.2-solo.save.tar my-elasticsearch-head:latest
    # ElasticHD插件(镜像:28MB,压缩包:28MB)
    docker save -o docker-elasticsearch-hd-7.6.2-solo.save.tar my-elasticsearch-hd:latest
    
  • 合并打包

    docker save my-elasticsearch:v7.6.2 my-elasticsearch-head:latest my-elasticsearch-hd:latest > docker-elasticsearch-7.6.2-solo.all.save.tar
    

    4. 加载镜像

    ```bash

    加载镜像

    docker load -i docker-elasticsearch-7.6.2-solo.save.tar docker load -i docker-elasticsearch-head-7.6.2-solo.save.tar docker load -i docker-elasticsearch-hd-7.6.2-solo.save.tar

合并包

docker load -i docker-elasticsearch-7.6.2-solo.all.save.tar

查看镜像

docker image ls |grep my-elasticsearch docker image ls |grep -E ‘my-elasticsearch|my-elasticsearch-head|my-elasticsearch-hd’

<a name="vefFv"></a>
## 5. 运行容器
```bash
# 启动ES
docker run -d --name=es762 \
  --privileged=true  \
  -p 9200:9200  \
  -p 9300:9300  \
  my-elasticsearch:v7.6.2

# 启动Head
sudo docker run -id --name es762-head  \
  -p 9100:9100  \
  my-elasticsearch-head:latest

# 启动HD
sudo docker run -d --name es762-hd \
  -p 9800:9800  \
  --link es762  \
  my-elasticsearch-hd:latest

参考

CSDN:Docker安装elasticsearch-7.7.0
https://blog.csdn.net/kevinmeng0509/article/details/106332399/
CSDN:手把手教你Windows下用Docker安装Elasticsearch和可视化管理工具ElasticHD和dejavu
https://blog.csdn.net/myyougod01/article/details/102588102