我有一个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
有没有办法克服此权限问题?
答案 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