如执行jmap查看java进程内存情况报错:
#/usr/lib/jvm/java-8-openjdk-amd64/bin/jmap 13
Attaching to process ID 13, please wait...
Error attaching to process: sun.jvm.hotspot.debugger.DebuggerException: Can't attach to the process: ptrace(PTRACE_ATTACH, ..) failed for 13: Operation not permitted
sun.jvm.hotspot.debugger.DebuggerException: sun.jvm.hotspot.debugger.DebuggerException: Can't attach to the process: ptrace(PTRACE_ATTACH, ..) failed for 13: Operation not permitted
原因是docker默认不允许ptrace,需要在容器启动时增加,–cap-add=SYS_PTRACE
如:
docker run --cap-add=SYS_PTRACE -d -p 8081:8080 -m 800M --memory-swap=1024M --name tomcat_admin -e JAVA_OPTS='-server -Dfile.encoding=UTF-8 -Xms512M -Xmx800M' -v /jbh_services/admin:/usr/local/tomcat/webapps --restart=always tomcat:8.5.63-jdk8-openjdk 1
参考:https://blog.csdn.net/qq_20315217/article/details/113931323