如何在docker容器中允许ptrace

如何在docker容器中允许ptrace,docker,apparmor,Docker,Apparmor,环顾四周,我发现我可以使用 docker run --privileged --rm -i -t app /bin/bash ptrace peer=@{profile_name} 这也允许访问任何用户拥有的所有进程上的所有ptrace函数。不幸的是,我不想让其他人拥有这种能力。 所以我找了apparmor,发现我可以用 docker run --privileged --rm -i -t app /bin/bash ptrace peer=@{profile_name} 在我的应用

环顾四周,我发现我可以使用

docker run --privileged --rm -i -t app /bin/bash
ptrace peer=@{profile_name} 
这也允许访问任何用户拥有的所有进程上的所有ptrace函数。不幸的是,我不想让其他人拥有这种能力。 所以我找了apparmor,发现我可以用

docker run --privileged --rm -i -t app /bin/bash
ptrace peer=@{profile_name} 
在我的应用程序中,有一个aparmor配置文件,然后在运行应用程序时将其包括在内

docker run --security-opt="apparmor:myprofile" --rm -i -t app /bin/bash
一切都很好。然后,我使用fuser(作为root),正如预期的那样,我可以看到root拥有的进程。但我有几个进程在uucp下运行,这使得权限被拒绝

所以我转到uucp下的bash

sudo -u uucp /bin/bash
但是使用fuser或lsof不起作用,并且不会返回任何结果


那么,当我像docker dontainer中所说的用户一样处于活动状态时,如何为任何用户激活ptrace呢?

看来此()的修复程序已于2015年7月30日合并为master,并包含在docker v1.8.0及更高版本中。最新版本的Docker和附带的AppArmor配置文件不应再出现此问题。

-->您应该尝试使用“-security opt seccomp=unconfined”来禁用seccomp阻止的所有系统调用-您尝试过吗?您可能想进一步阅读Docker的AppArmor配置文件: