docker 管理的容器无法使用jmap
一、进入容器中,执行jmap -heap pid ,报错
Error attaching to process: sun.jvm.hotspot.debugger.DebuggerException: Can't attach to the process: ptrace(PTRACE_ATTACH, ..) failed for 1: Operation not permitted
sun.jvm.hotspot.debugger.DebuggerException: sun.jvm.hotspot.debugger.DebuggerException: Can't attach to the process: ptrace(PTRACE_ATTACH, ..) failed for 1: Operation not permitted
图片描述:
二、原因分析:
这是类似于 jmap 这些 JDK 工具依赖于 Linux 的 PTRACE_ATTACH,而是 Docker 自 1.10 在默认的 seccomp 配置文件中禁用了 ptrace。
三、解决方案
- rancher管理的docker 可勾选此项,类似于–privileged,放开了权限
2.非rancher 管理的,可再docker run 命令后增加参数
docker run --cap-add=SYS_PTRACE ...