AppArmor对Docker容器的影响

2025-07-07 19:13:00
丁国栋
原创 10
摘要:AppArmor对Docker容器的影响。

今天有个测试同学在其自己的 Ubuntu 24 LTS 系统中意外的执行了错误命令 find / -name "mysql*" -delete。结果发现之前可以通过 docker compose 正常拉起的 MySQL 容器无法启动了,虽然容器启动了但因为提示找不到 MySQL 数据目录而退出。


  1. 测试其他容器发现可以正常启动并没有问题
  2. 使用 docker system prunedocker volume prune 发现不起作用
  3. 卸载和清理 Docker 服务,发现不起作用
  4. 一开始是用普通用户启动 Docker 容器,发现启动后报错,尝试使用 root 用户启动,发现启动成功,因此确定这是个权限问题
  5. 检查了数据库持久化目录的权限发现没有问题,移除数据库持久化目录数据和目录发现问题依然存在
  6. 怀疑是 AppArmor 拦截,于是检查 Docker 服务日志 和 系统日志,没有发现明显提示异常
  7. 去另一台正常的 Ubuntu 24 LTS 查找 /etc/ 下与 mysql 和 apparmor 相关的文件,发现有个/etc/apparmor.d/abstractions/mysql,将其复制到问题服务器,重新启动 MySQL 容器发现问题解决
  8. 由此可确定是 AppArmor 拦截的问题

参考:

AppArmor security profiles for Docker https://docs.docker.com/engine/security/apparmor/

--


发表评论
博客分类