Docker为自己创建的安装点赋予了奇怪的权限

问题描述 投票:5回答:1

我正在使用ACL来确保从主机到卷具有写访问权限。我有一个docker-compose.yml,例如MySQL和MongoDB在Docker卷中有数据目录。这些卷背后的内容无关紧要。甚至会清空未使用的容器文件夹。

如果卷对的本地文件夹不存在,则Docker创建它并设置一些奇怪的权限。如果文件夹已经在该文件夹中,则该权限是正常的,如预期的那样。

在项目的根目录中,我设置了ACL:

sudo setfacl -R -m u:mri:rwX .
sudo setfacl -dR -m u:mri:rwX .

例如docker-compose.yml包含:

mongo:
  image: mongo:3.0
  volumes:
    - ./docker/var/mongo:/data/db

当我启动容器并且Docker创建mongo目录时,它崩溃了权限,我得到了这个:

$ getfacl docker/var/mongo
# file: docker/var/mongo
# owner: 999
# group: root
user::rwx
user:mri:rwx            #effective:r-x
group::rwx              #effective:r-x
mask::r-x
other::r-x
default:user::rwx
default:user:mri:rwx
default:group::rwx
default:mask::rwx
default:other::r-x

目前,我没有写访问权限。

如果该文件夹以前存在,则不会发生。而且,如果我再次运行setfacl命令,我将再次具有访问权限。但是在我的自动化工作流程中,这是不可能的,也不是真正的解决方案。

为什么会发生这种情况,以及如何让Docker在不更改权限的情况下创建此文件夹?

linux docker docker-compose acl
1个回答
2
投票

此问题已经存在很长时间了,您要么自己创建文件夹和文件,要么在创建它们之后更改文件的所有者(默认情况下,它将分配给根用户)

因此您可以使用此命令:

sudo chown -R $USER:$USER docker

sudo chmod -R 777 docker
© www.soinside.com 2019 - 2024. All rights reserved.