启用了selinux的Docker-不允许在/ usr中重新标记内容

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

我在Centos7上将Docker与selinux设置为在主机上强制执行,并且Docker守护程序以--selinux-enabled标志启动。

当我尝试运行以下命令时

docker run -it   -v /usr/local/xya/log:/usr/local/xya/log:z centos/systemd touch /usr/local/xya/log/test 

我收到以下错误:

docker: Error response from daemon: error setting label on mount source '/usr/local/xya/log': relabeling content in /usr is not allowed.

根据某些文章(http://jaormx.github.io/2018/selinux-and-docker-notes/),'z'标志应该使/ usr可写;不知道我是否想念一些东西。

Docker版本19.03.3,内部版本a872fc2f86CentOS版本:CentOS Linux版本7.5.1804

docker selinux
2个回答
0
投票

该图像无权编辑或创建usr文件夹中的新文件,可以从Docs中使用--privileged参数启动容器


0
投票

我最近遇到了类似的问题(尽管有不同的问题),我发现Juan的SELinux and docker notes很有帮助。

我在查找强调以下几点的文档时遇到了麻烦,但是我记得看到了这一点,并且能够通过接受它作为真相来解决我的问题。如果/当我再次偶然发现它时,我将对其进行更新;并非/usr/etc中的所有内容都会授予您在SELinux中的写访问权限。

您可以在SELinux上下文中访问/etc/usr目录,但您无法获得到处的写入,因此当使用从这些位置。但是,如果您在其他地方有SELinux受保护的文件,例如在用户的主目录中,您将能够使Docker适当地重新标记这些文件-即,您可以使用zZ标志写入那些SELinux受保护的文件/目录。

如果您需要在zZ目录中写入并获得无法重新标记的警报,则/usr标志或/etc标志应代替--privileged语法。这将允许您具有写访问权,但是您需要从卷装载中删除--security-opt label:disable,因为Docker仍然会给您无法重新标记的语句。

注意,对于给定服务,您还可以通过--security-opt label:disable在docker-compose.yml中调用z

© www.soinside.com 2019 - 2024. All rights reserved.