错误:权限被拒绝 - / usr / share / logstash / sincedb / sincedb

时间:2018-03-21 18:34:55

标签: docker-compose logstash

我有一个docker-compose文件用于运行多个容器,包括Logstash。我已将挂载的sincedb映射为代码段

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

Logstash容器有一些权限错误,特别是访问sincedb时,如下面的错误代码段所示:

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

有没有办法克服此权限问题?

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

您可以尝试使用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