Permissions 如何在Docker容器中使用setfacl?

Permissions 如何在Docker容器中使用setfacl?,permissions,docker,Permissions,Docker,在容器中,文件系统似乎是在没有“acl”的情况下安装的,因此“setfacl”将无法工作。它也不会让我重新安装它,我甚至不能运行“df-h” 我需要setfacl,因为我让root拥有我网站上的所有文件,并且我只给webserver用户对缓存、日志等几个目录的写权限 我能做什么?好消息是Docker支持ACL 在早期版本中,Docker使用了一个名为AUFS的文件系统,该文件系统不支持它们。 通过使用适当的选项启动Docker守护程序,您可以告诉Docker使用设备映射器(LVM)进行存储: d

在容器中,文件系统似乎是在没有“acl”的情况下安装的,因此“setfacl”将无法工作。它也不会让我重新安装它,我甚至不能运行“df-h”

我需要setfacl,因为我让root拥有我网站上的所有文件,并且我只给webserver用户对缓存、日志等几个目录的写权限


我能做什么?

好消息是Docker支持ACL

在早期版本中,Docker使用了一个名为AUFS的文件系统,该文件系统不支持它们。 通过使用适当的选项启动Docker守护程序,您可以告诉Docker使用设备映射器(LVM)进行存储:

docker -d --storage-driver=devicemapper --daemon=true
有趣!但转向LVM难道没有任何负面影响吗?每次我读到Docker的好处时,它都会提到AUF,尽管我并不完全理解它。不管怎样,在你链接的源代码中,它说了一些我正在考虑并打算下一步尝试的事情:使用一个卷,我需要它在同一个地方共享文件。我只是不确定这将如何工作,因为当我运行这些命令时,我在Dockerfile中,所以我还没有卷,因为我在构建映像后启动cointainer守护程序时添加了它们。AUFS和LVM(dm thin)是非常不同的实现,这是一个广泛的主题。但是,在将Docker守护进程切换到Docker守护进程之后,您不应该看到任何功能上的差异。缺点:不太稳定,但他们声称这在0.9和0.9.1版本中有了很大的改进。另外,请注意,卷也接受绑定挂载:您可以将主机上的现有目录绑定到容器,我猜这将允许您在构建映像时“查看”相同的内容。从文档中可以看出:“注意,[bind mount]由于其可移植性和共享目的,无法从Dockerfile获得”。更改存储驱动程序似乎不错,我发现这些选项可以在/etc/default/docker中轻松修改。但是我需要重建所有的图像,所以当我这么做的时候,我意识到:我在使用容器!这意味着我不需要像以前那样担心权限问题,所以现在我只需要浏览/chmod我希望Web服务器用户可以写入的文件夹,而不需要使用setfacl。谢谢你的帮助!你知道Overlay2是否支持ACL吗?这篇博文说Overlay2支持ACL,但我无法在alpine上用Overlay2成功设置ACL。
ln -s /proc/mounts /etc/mtab