AppArmor对Docker容器的影响
- 2025-07-07 19:13:00
- 丁国栋
- 原创 10
今天有个测试同学在其自己的 Ubuntu 24 LTS 系统中意外的执行了错误命令 find / -name "mysql*" -delete
。结果发现之前可以通过 docker compose
正常拉起的 MySQL 容器无法启动了,虽然容器启动了但因为提示找不到 MySQL 数据目录而退出。
- 测试其他容器发现可以正常启动并没有问题
- 使用
docker system prune
和docker volume prune
发现不起作用 - 卸载和清理 Docker 服务,发现不起作用
- 一开始是用普通用户启动 Docker 容器,发现启动后报错,尝试使用 root 用户启动,发现启动成功,因此确定这是个权限问题
- 检查了数据库持久化目录的权限发现没有问题,移除数据库持久化目录数据和目录发现问题依然存在
- 怀疑是 AppArmor 拦截,于是检查 Docker 服务日志 和 系统日志,没有发现明显提示异常
- 去另一台正常的 Ubuntu 24 LTS 查找 /etc/ 下与 mysql 和 apparmor 相关的文件,发现有个
/etc/apparmor.d/abstractions/mysql
,将其复制到问题服务器,重新启动 MySQL 容器发现问题解决 - 由此可确定是 AppArmor 拦截的问题
参考:
AppArmor security profiles for Docker https://docs.docker.com/engine/security/apparmor/
--
发表评论