如何在 docker 容器中允许 ptrace

How to allow ptrace in docker container

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

docker run --privileged --rm -i -t app /bin/bash

这也允许访问任何用户拥有的所有进程上的所有 ptrace 函数。不幸的是我不想让别人有这个能力。 所以我查看了 apparmor,发现我可以使用

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 不起作用,returns 什么都没有。

那么,当我在 docker dontainer 中作为所述用户处于活动状态时,如何为任何用户激活 ptrace?

看起来此 (https://github.com/docker/docker/pull/15161) 的修复已于 2015-07-30 合并到 master,并包含在 Docker v1.8.0 及更高版本中。这应该不再是最近版本的 Docker 和包含的 AppArmor 配置文件的问题。