Docker启动单机elasticsearch生产配置

宿主机目录挂载

在docker容器中运行elasticsearch时,需要进行配置、插件、日志和数据文件的挂载。

创建挂载文件

切换es用户

su es01

创建es本地目录

cd /data && mkdir es_node1

在es_node1下面创建配置、日志、数据目录

cd /data/es_node1 && mkdir logs data config plugins

基础配置

在config目录中,新增如下elasticsearch.yml配置文件

cluster.name: es-cluster
discovery.type: single-node
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
transport.port: 9300
bootstrap.memory_lock: true
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: "Authorization"

JVM配置

在config目录下面创建jvm.options.d目录,用于jm配置

mkdir jvm.options.d

在jvm.options.d中,新增如下jvm.options配置文件

-Xms4g
-Xmx4g

映射关系

外部文件目录与elasticsearch容器内部文件目录之间的映射关系,作为es容器启动时的挂载参数。

# 挂载数据文件目录,默认读写
-v /data/es_node1/data:/usr/share/elasticsearch/data
# 挂载日志文件目录,默认读写
-v /data/es_node1/logs:/usr/share/elasticsearch/logs
# 挂载配置文件,默认读写
-v /data/es_node1/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
# 挂载jvm配置目录,默认读写
-v /data/es_node1/config/jvm.options.d:/usr/share/elasticsearch/config/jvm.options.d
# 挂载插件目录,默认读写
-v /data/es_node1/plugins:/usr/share/elasticsearch/plugins

Docker启动

拉取elasticsearch镜像

docker pull docker.elastic.co/elasticsearch/elasticsearch:7.10.2

推荐使用非root用户启动,在这里使用es01用户,确保es01用户拥有挂载文件目录的读写权限。将启动用户添加到docker用户组。若不添加,没有权限访问docker守护线程。

sudo usermod -aG docker es01

查找用户对应的uid,docker无法识别用户名,需要使用uid

启动脚本如下

docker run -d --name=node-1 -u 1012 --restart=always \
-p 9206:9200 -p 9306:9300 \
--ulimit nofile=65536:65536 \
--ulimit nproc=4096:4096 \
--ulimit memlock=-1:-1 \
--sysctl vm.max_map_count=262144 \
-v /data/es_node1/data:/usr/share/elasticsearch/data \
-v /data/es_node1/logs:/usr/share/elasticsearch/logs \
-v /data/es_node1/config/elastic-certificates.p12:/usr/share/elasticsearch/config/elastic-certificates.p12 \
-v /data/es_node1/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /data/es_node1/config/jvm.options.d:/usr/share/elasticsearch/config/jvm.options.d \
-v /data/es_node1/plugins:/usr/share/elasticsearch/plugins \
docker.elastic.co/elasticsearch/elasticsearch:7.10.2
  • 浏览器访问

http://127.0.0.1:9206/

问题记录

无权访问Docker守护进程

当以es01用户启动容器时,报无法访问docker daemon socket的错。

错误信息

docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http                                         ://%2Fvar%2Frun%2Fdocker.sock/v1.39/containers/create?name=es-node2: dial unix /var/run/docker.sock: connect: permission denied.

解决方法:添加到docker用户组

#使用root账号将es01添加到docker组,es01重新登录后生效
usermod -aG docker es01

Docker无法识别用户

以用户名启动容器时(如-u es01),报无法发现该用户的错。docker中只能识别uid和gid,所以使用

错误信息

docker: Error response from daemon: linux spec user: unable to find user es01: no matching entries in passwd file.

解决方法:使用uid替代用户名

# 使用uid,在启动参数中添加 -u <uid>
docker run -u <uid> ...

docker run -u 1011 ...
posted @   cd_along  阅读(366)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示