为什么 selinux 拒绝对我的容器内的 container_file_t 类型进行文件访问(ls /usr/bin)

为什么 selinux 拒绝对我的容器内的 container_file_t 类型进行文件访问(ls /usr/bin)

我有一个 RHEL7.4 节点,当强制执行 selinux 时,它将使我的容器失败,我检查并发现它拒绝读取容器内部目录:

# docker run  -it 172.16.1.120:5000/fluentd:0.14 ls /usr/bin
ls: cannot open directory /usr/bin: Permission denied
# docker run  -it 172.16.1.120:5000/fluentd:0.14 ls -dZl /usr/bin
dr-xr-xr-x. 1 system_u:object_r:container_file_t:s0:c5,c284 root root 12288 Dec 15  2017 /usr/bin

selinux 正在强制执行。但在另一个 RHEL7.4 节点上,selinux 也正在强制执行,可以执行“ls”:

[root@msun ~]$ # docker run -it fluentd:0.14 ls -l /bin/bash
-rwxr-xr-x. 1 root root 960632 Aug  3  2017 /bin/bash
[root@msun ~]$ # docker run -it fluentd:0.14 ls -dZl /bin/bash
-rwxr-xr-x. 1 system_u:object_r:container_file_t:s0:c122,c942 root root 960632 Aug  3  2017 /bin/bash
[root@msun ~]$ # 

因此,同一个容器在一个节点上被拒绝,而在另一个节点上被允许。我认为故障节点上的拒绝是不正确的,应该允许 container_t 域访问具有 container_file_t 类型的文件。

需要可能的原因和建议如何调查故障节点上的问题?

相关内容