无法在容器上应用 AppArmor 配置文件:“没有这样的文件或目录”

E23*_*235 6 containers apparmor docker

我正在尝试应用以下简单的 AppArmor 配置文件:

#include <tunables/global>

profile docker-profile flags=(attach_disconnected,mediate_deleted) {
  #include <abstractions/base>
  #network,
  #capability,
  #file,
  #umount,
  #ptrace,
  #mount,
  pivot_root,
}
Run Code Online (Sandbox Code Playgroud)

当我运行时,docker run -it --rm --security-opt apparmor=docker-profile alpine出现以下错误:

docker:来自守护进程的错误响应:无效的标头字段值“oci运行时错误:container_linux.go:247:启动容器进程导致\”process_linux.go:359:容器初始化导致\\“apparmor无法应用配置文件:没有这样的文件或目录\\"\"\n"。

我尝试重新安装它(基于此处的建议):

rm -rf /etc/apparmor*
apt install apparmor --reinstall
service apparmor restart
service docker restart
Run Code Online (Sandbox Code Playgroud)

这没有帮助,我仍然遇到同样的错误。

有什么建议可能是什么原因以及如何解决吗?

小智 15

sudo apt-get purge apparmor apparmor-profiles apparmor-utils

sudo apt-get install apparmor-utils apparmor-profiles apparmor-profiles-extra vim-addon-manager

reboot
Run Code Online (Sandbox Code Playgroud)

  • 欢迎来到堆栈溢出!虽然此代码可以解决问题,但[包括解释](//meta.stackexchange.com/q/114762) 如何以及为何解决问题确实有助于提高帖子的质量,并可能会带来更多结果赞成票。请记住,您是在为将来的读者回答问题,而不仅仅是现在提问的人。请[编辑]您的答案以添加解释并指出适用的限制和假设。 (8认同)
  • 这对我在 Debian 11 bullseye 上有用!谢谢! (2认同)

E23*_*235 2

我需要通过运行来注册配置文件apparmor_parser -r -W docker.profile

更多信息可以在这里找到: https:
//docs.docker.com/engine/security/apparmor/