Ubuntu 上 SELinux 与 Docker 的兼容性与实践
一 兼容性与默认情况
二 在 Ubuntu 启用 SELinux 的可行路径
sudo apt-get update && sudo apt-get install -y selinux-basics selinux-policy-defaultsudo nano /etc/selinux/config,将 SELINUX=disabled 改为 SELINUX=permissive(首次建议宽容模式验证)并重启。getenforce(应返回 Permissive 或 Enforcing)。daemon.json 中显式设置 "selinux-enabled": true;该选项多见于 RHEL/CentOS 的 Docker 包。若启用 SELinux,请确保 Docker 使用与 SELinux 兼容的存储驱动(如 overlay2),并在需要时调整挂载选项。三 常见故障与修复要点
-v 挂载时追加 :z(共享标签)或 :Z(私有标签),例如:docker run -v /host/data:/container/data:z nginx。这会让 Docker 在挂载时自动为目录设置合适的 SELinux 类型,避免主体无权访问客体。sudo journalctl -u docker -n 200 --no-pagersudo ausearch -m avc -ts recent,必要时用 audit2allow 生成自定义策略模块,避免粗暴禁用 SELinux。四 安全与运维建议
--privileged 会绕过所有 SELinux 限制,应仅用于测试或确有必要的场景,生产环境应避免。