docker-compose安装es和ik插件数据卷挂载文件不同步

volumes挂载文件夹没有同步有两个方面

1、文件夹权限问题(宿主和容器的文件夹修改777权限即可)。

容器文件夹修改权限:docker exec 容器 chmod 777 文件路径。

2、容器路径写错问题。

使用 docker exec 容器名(容器id)pwd 可以查看容器目录路径。

如:

[root@iZwz9c3nik8qod00lfj3qnZ ~]# docker exec es-sit pwd
/usr/share/elasticsearch

然后再回写到compose的volumes中就可以了。

做了volumes文件挂载后,使用docker-compose -f docker-compose-es.yml up 创建并运行容器时报错如下:

elasticsearch    | Exception in thread "main" java.lang.RuntimeException: starting java failed with [1]
elasticsearch    | output:
elasticsearch    | [0.001s][error][logging] Error opening log file 'logs/gc.log': Permission denied
elasticsearch    | [0.001s][error][logging] Initialization of output 'file=logs/gc.log' using options 'filecount=32,filesize=64m' failed.
elasticsearch    | error:
elasticsearch    | Invalid -Xlog option '-Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,pid,tags:filecount=32,filesize=64m', see error log for details.
elasticsearch    | Error: Could not create the Java Virtual Machine.
elasticsearch    | Error: A fatal exception has occurred. Program will exit.
elasticsearch    | 	at org.elasticsearch.tools.launchers.JvmErgonomics.flagsFinal(JvmErgonomics.java:126)
elasticsearch    | 	at org.elasticsearch.tools.launchers.JvmErgonomics.finalJvmOptions(JvmErgonomics.java:88)
elasticsearch    | 	at org.elasticsearch.tools.launchers.JvmErgonomics.choose(JvmErgonomics.java:59)
elasticsearch    | 	at org.elasticsearch.tools.launchers.JvmOptionsParser.jvmOptions(JvmOptionsParser.java:137)
elasticsearch    | 	at org.elasticsearch.tools.launchers.JvmOptionsParser.main(JvmOptionsParser.java:95)
es-sit           | Exception in thread "main" java.lang.RuntimeException: starting java failed with [1]
es-sit           | output:
es-sit           | [0.001s][error][logging] Error opening log file 'logs/gc.log': Permission denied
es-sit           | [0.001s][error][logging] Initialization of output 'file=logs/gc.log' using options 'filecount=32,filesize=64m' failed.
es-sit           | error:
es-sit           | Invalid -Xlog option '-Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,pid,tags:filecount=32,filesize=64m', see error log for details.
es-sit           | Error: Could not create the Java Virtual Machine.
es-sit           | Error: A fatal exception has occurred. Program will exit.
es-sit           | 	at org.elasticsearch.tools.launchers.JvmErgonomics.flagsFinal(JvmErgonomics.java:126)
es-sit           | 	at org.elasticsearch.tools.launchers.JvmErgonomics.finalJvmOptions(JvmErgonomics.java:88)
es-sit           | 	at org.elasticsearch.tools.launchers.JvmErgonomics.choose(JvmErgonomics.java:59)
es-sit           | 	at org.elasticsearch.tools.launchers.JvmOptionsParser.jvmOptions(JvmOptionsParser.java:137)
es-sit           | 	at org.elasticsearch.tools.launchers.JvmOptionsParser.main(JvmOptionsParser.java:95)

解决:docker-compose-es.yml中添加TAKE_FILE_OWNERSHIP=true

解释:

绑定-挂载本地目录或文件,请确保该用户能够读懂它,而数据和日志dirs则需要另外的写访问权限。一个好的策略是为本地目录授予组对gid 1000或0的访问权限。例如,准备一个本地目录,以便通过绑定挂载存储数据:

mkdir esdatadir
chmod g+rwx esdatadir
chgrp 1000 esdatadir

最后,您还可以强制容器通过环境变量TAKE_FILE_OWNERSHIP来更改用于数据和日志dirs的绑定挂载的所有权;在这种情况下,它们将归uid:gid 1000:0所有,根据需要提供对Elasticsearch进程的读写访问。

改好后运行不报错,改成后台运行命令:docker-compose -f docker-compose-es.yml up -d

重启ocker-compose -f docker-compose-es.yml restart -d

-d:后台运行

compose文件代码:

services:
  elasticsearch:
    image: elasticsearch:7.10.1
    container_name: elasticsearch
    privileged: true
    environment:
      - "cluster.name=elasticsearch" #设置集群名称为elasticsearch
      - "discovery.type=single-node" #以单一节点模式启动
      - "ES_JAVA_OPTS=-Xms512m -Xmx1096m" #设置使用jvm内存大小
      - "bootstrap.memory_lock=true"
      - "TAKE_FILE_OWNERSHIP=true"
      - "ELASTICSEARCH_USERNAME=es"
      - "ELASTICSEARCH_PASSWORD=123456"
    volumes:
      - /data/elasticsearch/plugins:/usr/share/elasticsearch/plugins #插件文件挂载
      - /data/elasticsearch/data:/usr/share/elasticsearch/data:rw #数据文件挂载
      - /data/elasticsearch/logs:/usr/share/elasticsearch/logs:rw
    ports:
      - 9200:9200
      - 9300:9300
    deploy:
     resources:
        limits:
           cpus: "2"
           memory: 1000M
        reservations:
           memory: 200M

  es-sit:
    image: elasticsearch:7.10.1
    container_name: es-sit
    privileged: true
    environment:
      - "cluster.name=elasticsearch" #设置集群名称为elasticsearch
      - "discovery.type=single-node" #以单一节点模式启动
      - "ES_JAVA_OPTS=-Xms512m -Xmx1096m" #设置使用jvm内存大小
      - "TAKE_FILE_OWNERSHIP=true"
      - "bootstrap.memory_lock=true"
      - "ELASTICSEARCH_USERNAME=es"
      - "ELASTICSEARCH_PASSWORD=123!@#es"
    volumes:
      - /data/elasticsearch/es-sit/plugins:/usr/share/elasticsearch/plugins #插件文件挂载
      - /data/elasticsearch/es-sit/data:/usr/share/elasticsearch/data:rw #数据文件挂载
      - /data/elasticsearches-sit/logs:/usr/share/elasticsearch/logs:rw
    ports:
      - 9201:9200
      - 9301:9300
    deploy:
     resources:
        limits:
           cpus: "2"
           memory: 1000M
        reservations:
           memory: 200M

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值