我在 Ubuntu 16.04 上玩 apparmor 和 docker,我可以让它在容器上运行......有时
Docker 版本 18.03.0-ce,内部版本 0520e24
$ docker run -it ubuntu bash
导致 docker 容器按预期运行 ubuntu 16.04
$ sudo aa-status
显示 docker 默认在容器上处于活动状态
通过 bash 在容器内运行$ cat /proc/sysrq-trigger
会返回预测的"权限被拒绝",因为它被默认的 docker apparmor 配置文件阻止,如以下指南所示:https://cloud.google.com/container-optimized-os/docs/how-to/secure-apparmor#creating_a_custom_security_profile
接下来是
$ docker run -it --security-opt apparmor=unconfined ubuntu bash
返回$ sudo aa-status
和$ cat /proc/sysrq-trigger
回报的预期结果cat: /proc/sysrq-trigger: Input/output error
到目前为止一切都很好,但现在如果我在分离模式下运行容器,apparmor配置文件将停止工作(参考: https://docs.docker.com/engine/security/apparmor/#resources-for-writing-profiles)
我能够构建 apparmor 配置文件并看到它以 aa 状态运行,但是当我执行到容器中时,没有任何内容被阻止。它不适用于nginx容器,我已经尝试过其他容器。但是如果我在分离状态下运行,它不会阻止任何东西$ docker run -d ubuntu tail -f /dev/null
无论我如何应用 --security-opt。
谁能解释一下apparmor如何与docker一起工作以及为什么会这样?
谢谢!
我发现 apparmor 适用于 docker 1.13.1,并且计划在下一个版本中修复一个错误:docker 18.03.1
参考: https://github.com/moby/moby/pull/36466