【问题标题】:Docker Compose raise an AccessDeniedExpcetionDocker Compose 引发 AccessDeniedExpcetion
【发布时间】:2016-03-22 01:36:11
【问题描述】:

我正在尝试使用 docker compose 来编写 ELK 架构。以下是撰写文件:

version: '2'

services:

  elasticsearch_assets:
    image: elasticsearch
    volumes:
      - ./elasticsearch/config:/usr/share/elasticsearch/config
      - ./elasticsearch/data:/usr/share/elasticsearch/data
      - ./elasticsearch/logs:/usr/share/elasticsearch/logs
    command: /bin/true

  elasticsearch:
    image: elasticsearch
    volumes_from:
      - elasticsearch_assets:rw
    depends_on:
      - elasticsearch_assets

这里是项目结构的截图:

当我运行docker-compose up 时,出现以下错误:

Starting elkdocker_elasticsearch_assets_1
Starting elkdocker_elasticsearch_1
Attaching to elkdocker_elasticsearch_assets_1, elkdocker_elasticsearch_1
elkdocker_elasticsearch_assets_1 exited with code 0
elasticsearch_1        | [2016-03-22 01:28:59,939][WARN ][bootstrap                ] unable to install syscall filter: seccomp unavailable: your kernel is buggy and you should upgrade
elasticsearch_1        | Exception in thread "main" java.lang.IllegalStateException: Unable to access 'path.scripts' (/usr/share/elasticsearch/config/scripts)
elasticsearch_1        | Likely root cause: java.nio.file.AccessDeniedException: /usr/share/elasticsearch/config/scripts
elasticsearch_1        |    at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84)
elasticsearch_1        |    at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
elasticsearch_1        |    at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
elasticsearch_1        |    at sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:384)
elasticsearch_1        |    at java.nio.file.Files.createDirectory(Files.java:674)
elasticsearch_1        |    at java.nio.file.Files.createAndCheckIsDirectory(Files.java:781)
elasticsearch_1        |    at java.nio.file.Files.createDirectories(Files.java:767)
elasticsearch_1        |    at org.elasticsearch.bootstrap.Security.ensureDirectoryExists(Security.java:337)
elasticsearch_1        |    at org.elasticsearch.bootstrap.Security.addPath(Security.java:314)
elasticsearch_1        |    at org.elasticsearch.bootstrap.Security.addFilePermissions(Security.java:248)
elasticsearch_1        |    at org.elasticsearch.bootstrap.Security.createPermissions(Security.java:212)
elasticsearch_1        |    at org.elasticsearch.bootstrap.Security.configure(Security.java:118)
elasticsearch_1        |    at org.elasticsearch.bootstrap.Bootstrap.setupSecurity(Bootstrap.java:196)
elasticsearch_1        |    at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:167)
elasticsearch_1        |    at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:285)
elasticsearch_1        |    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:35)
elasticsearch_1        | Refer to the log for complete error details.
elkdocker_elasticsearch_1 exited with code 1

你知道为什么吗?

【问题讨论】:

  • 主要问题是Unable to access 'path.scripts' (/usr/share/elasticsearch/config/scripts)。看起来像是权限问题。
  • @warmoverflow 我已经知道了,但为什么是权限问题?
  • 你的项目文件夹在Users下吗?
  • 是/Users/<myname>/<foldername>/<projectfolder>下
  • 由于你的yml文件和config文件夹是同级的,不知道是不是应该把路径设置成./config:container_path,还是试试绝对路径。

标签: elasticsearch docker docker-compose


【解决方案1】:

关于这个错误 无法访问“path.scripts”错误 只需在 config 文件夹下创建一个名为 scripts 的子文件夹
它将修复错误

./elasticsearch/config ==> mkdir ./elasticsearch/config/scripts

【讨论】:

    【解决方案2】:

    把 docker compose 改成这样的

    -v /elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml

    而不是指向空目录

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-20
      • 2021-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多