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 ...
标签:
Elastic stack
, Elasticsearch
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)