如何解决执行docker-compose up出现的'apparmor_parser: Unable to replace "docker-default"'错误
报错根因
该错误由宿主系统启用的AppArmor安全模块引发:Docker进程无权限加载默认的docker-default安全配置文件,导致服务容器无法完成启动流程。
解决方案
按优先级从高到低尝试以下操作即可:
方案1:重启Docker服务重载配置
执行命令重启Docker进程,恢复配置加载权限:sudo systemctl restart docker重启完成后重新执行
docker-compose up -d验证是否恢复。方案2:手动重载Docker的AppArmor配置
如果方案1无效,手动重新加载AppArmor中的Docker规则:# 先停止Docker服务 sudo systemctl stop docker # 重载Docker默认AppArmor配置 sudo apparmor_parser -r /etc/apparmor.d/docker # 重启Docker服务 sudo systemctl start docker操作完成后重新启动容器栈验证。
方案3:临时规避(仅适用于开发测试环境)
不需要AppArmor安全限制的场景下,可在docker-compose.yml中为对应服务添加无限制配置,跳过AppArmor校验:services: mysql: # 保留原有mysql配置不变,新增以下配置 security_opt: - apparmor:unconfined maildev: # 保留原有maildev配置不变,新增以下配置 security_opt: - apparmor:unconfined修改后重新执行
docker-compose up -d即可启动。方案4:修复组件安装异常
如果以上方案均无效,说明Docker或AppArmor组件安装存在损坏,执行命令重装对应组件:sudo apt update && sudo apt install --reinstall docker.io apparmor重装完成后重启Docker服务即可恢复。
内容的提问来源于stack exchange,提问作者Asha
相关产品推荐
相关产品推荐

