当我启动其中包含 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' 启动