如执行jmap查看java进程内存情况报错:

    1. #/usr/lib/jvm/java-8-openjdk-amd64/bin/jmap 13
    2. Attaching to process ID 13, please wait...
    3. Error attaching to process: sun.jvm.hotspot.debugger.DebuggerException: Can't attach to the process: ptrace(PTRACE_ATTACH, ..) failed for 13: Operation not permitted
    4. 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
    如:

    1. 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