当 SELinux 处于强制状态时,无法使用 systemd 启动 docker 容器

当 SELinux 处于强制状态时,无法使用 systemd 启动 docker 容器

当我启动其中包含 systemd 的 Docker 容器并处于 SELinuxenforcing状态时,我收到一条错误消息“没有这样的文件或目录”,并且容器无法启动。

审计日志给出以下错误消息:

avc:拒绝 { 读取执行 } for pid=XXXX comm="w" path="/w/w" dev="sda3" ino=135817694 scontext=system_u:system_r:container_t:s0:c712,c950 tcontext=system_u:object_r:container_file_t:s0:c373,c565 tclass=file permissive=0

avc:拒绝 { 读取执行 } for pid=XXXX comm="sh" path="/usr/bin/bash" dev="sda3" ino=2687570 scontext=system_u:system_r:container_t:s0:c337,c629 tcontext=system_u:object_r:default_t:s0 tclass=file permissive=0

我添加了以下 SELInux 策略来修复此问题:

allow container_t default_t:file { create execute execute_no_trans ioctl open read write };
allow container_t container_file_t:file { execute execute_no_trans read write };
allow container_t default_t:dir { add_name remove_name write };

但我仍然遇到同样的错误。

答案1

Docker 有自己的启动方法。使用选项 '--restart=always' 启动

docker 参考

相关内容