我有一个 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 类型的文件。
需要可能的原因和建议如何调查故障节点上的问题?