我在Ubuntu 16.04上玩apparmor和docker,我可以让它在容器上运行......有时候
Docker版本18.03.0-ce,build 0520e24
$ docker run -it ubuntu bash
按预期运行ubuntu 16.04的docker容器中的结果
$ sudo aa-status
显示docker-default在容器上处于活动状态
并通过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-status运行但是当我执行到容器时,没有任何东西被阻止。它对nginx容器不起作用,我尝试过使用其他容器。但是如果我运行处于分离状态$ docker run -d ubuntu tail -f /dev/null
,无论我如何申请,它都不会阻止任何事情--security-opt。
任何人都可以解释apparmor如何与docker一起使用以及为什么会出现这种情况?
谢谢!
答案 0 :(得分:0)
我发现apparmor适用于docker 1.13.1,并且计划在下一个版本中修复bug:docker 18.03.1