我有一个特定的容器,我需要在其中挂载/ proc文件系统,这通常由SELinux支持,原因可以理解。我想创建一个正常的SELinux策略的修改,允许这个特定的标签,然后让Docker运行一个特定的容器,我用这个策略而不是普通的system_u:system_r:container_t:s0:c540,c856
上下文创建一个新的上下文。 / p>
这可能吗?怎么样?我甚至找不到禁用从system_u:system_r:container_t:s0:c540,c856
上下文中挂载/ proc的策略文件的源代码。我该如何安装?
我现在有一个策略文件,重新启用所有容器的/ proc挂载,这不是我想要的。但我不知道如何写出我真正需要的东西。而且我不知道如何让Docker在不同的环境中运行。这是我所拥有的政策文件过于宽泛:
gen_require(`
type proc_t;
type tmpfs_t;
type container_t;
class filesystem unmount;
class filesystem mount;
class filesystem remount;
class dir mounton;
class dir proc_t;
')
#============= container_t ==============
allow container_t proc_t:filesystem unmount;
allow container_t proc_t:filesystem mount;
allow container_t proc_t:filesystem remount;
allow container_t tmpfs_t:filesystem unmount;
allow container_t proc_t:dir mounton;
具有不同缺点的不同答案是:
docker run --security-opt label:disable
这将禁用该容器的所有SELinux检查。有section in the Docker manual that talks about the various valid arguments for --security-opt
, including SELinux related ones。
因此,我目前的选择是,禁用所有容器的/proc
相关检查,或禁用特定容器的所有检查。使用label:
参数,你也可以为容器设置一个特定的SELinux上下文,所以如果我知道如何创建一个新的SELinux上下文,就像其他的一样,除了我指定的一些东西,我可以得到我想要的东西。
此外,这个问题与我之前在ServerFault上提出的另一个问题有关:How do I mount a private /proc inside a namespace inside a Docker container?。