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

Docker compose 错误:权限被拒绝-/usr/share/logstash/sincedb/sincedb,docker-compose,logstash,Docker Compose,Logstash,我有一个docker compose文件,用于运行多个容器,包括Logstash。我已经映射了装载的sincedb,如代码片段所示: logstash: build: context: logstash/ volumes: - ./tmp/logstash/sincedb:/usr/share/logstash/sincedb Logstash容器有一些权限错误,尤其是在访问sincedb时,如下面的错误片段所示: Error: Permission denied - /u

我有一个
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

有没有办法解决此权限问题?

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

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

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

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

尝试使用docker命名卷,可能您对主机的权限不正确。/tmpfolder@MazelTov你能给我举个例子或参考我是如何做到这一点的吗。我认为我的方法已经使用了
docker命名卷