启用selinux的Docker-不允许在/usr中重新标记内容
我让Centos7上的Docker将selinux设置为在主机上强制执行,Docker守护进程以--selinux enabled标志启动 当我尝试运行以下命令时启用selinux的Docker-不允许在/usr中重新标记内容,docker,selinux,Docker,Selinux,我让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 la
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.
根据一些文章(),'z'标志应该使/usr可写;不确定我是否遗漏了什么
Docker版本19.03.3,内置a872fc2f86
CentOS版本:CentOS Linux 7.5.1804版该图像无权在
usr
文件夹中编辑或创建新文件,您可以使用--privileged
参数启动容器我最近遇到了一个类似的问题(尽管问题不同),我发现Juan的帮助很大
我很难找到强调以下要点的文档,但我记得看到过它,并且能够通过接受它作为事实来回避我的问题。如果/当我再次偶然发现它时,我会更新它;并非/usr
或/etc
中的所有内容都会授予您在SELinux中的写访问权限。至少不是在Docker的背景下
您可以访问SELinux上下文中的/etc
和/usr
目录,但您无法在任何地方都获得write,因此z
和z
在从这些位置旋转带有卷装载的docker容器时,有时会导致无法标记问题。但是,如果您在其他地方有SELinux保护的文件,例如在用户主目录中,您可以让Docker适当地重新标记这些文件——也就是说,您可以使用z
或z
标志写入这些SELinux保护的文件/目录
如果需要在/usr
或/etc
目录中写入并获取无法重新标记警报,则应使用--privileged
标志或标志,而不是z
语法。这将允许您具有写访问权限,但您需要从卷装载中删除z
,因为Docker仍然会给您无法重新标记语句
注意,对于给定的服务,您还可以通过privileged:true
调用docker-compose.yml中的privileged