【问题标题】:Error: Permission denied - /usr/share/logstash/sincedb/sincedb错误:权限被拒绝 - /usr/share/logstash/sincedb/sincedb
【发布时间】:2018-03-28 01:14:18
【问题描述】:

我有一个 docker-compose 文件,用于运行包括 Logstash 在内的多个容器。我已将挂载的sincedb 映射为 sn-p:

logstash:
build:
  context: logstash/
volumes:      
  - ./tmp/logstash/sincedb:/usr/share/logstash/sincedb

Logstash 容器有一些权限错误,尤其是在访问 sincedb 时,如下面的错误 sn-p 所示:

Error: Permission denied - /usr/share/logstash/sincedb/sincedb
Exception: Errno::EACCES

我尝试在容器 chmod 中执行,但出现以下错误:

bash-4.2$ chmod o+wx /usr/share/logstash/sincedb/
chmod: changing permissions of ‘/usr/share/logstash/sincedb/’: Operation not permitted

有没有办法克服这个权限问题?

【问题讨论】:

  • 尝试使用docker命名卷,可能你的主机./tmp文件夹权限不好
  • @MazelTov 你能举个例子或参考我如何做到这一点。我认为我的方法已经使用了docker named volumes ?

标签: docker-compose logstash


【解决方案1】:

我能够通过为主机文件夹设置适当的权限来解决这个问题,该文件夹映射到 docker 容器中的文件夹。通过对文件夹发出命令chmod -R 757,访问是可能的。不过,这是一个临时措施,后来我发现可以在 docker-compose.yml 文件中通过在特定行的末尾附加 :rw 来设置正确的权限,如下所示:

 volumes:
  - logstash_data:/usr/share/logstash/sincedb:rw

这有效地维护了跨重建的权限,这是前面提到的方法的一个限制(除了安全隐患)

【讨论】:

    【解决方案2】:

    您可以尝试使用 docker 命名卷。目前您只是将主机文件夹安装到容器中

    带有命名卷的示例 docker-compose.yml

    version: '3.5'
    services:  
      logstash:
        build:
          context: logstash/
        volumes:
          - logstash_data:/usr/share/logstash/sincedb
    
    volumes:
      logstash_data: # optionaly define more parameters
    

    然后你可以使用命令查看命名卷

    docker volume ls
    

    【讨论】:

      猜你喜欢
      • 2013-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-28
      • 2020-08-30
      • 2021-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多