查看 docker 进程,获取containerid
docker ps
进入容器
docker exec -it containerid /bin/bash
有时候直接用上述命令会有以下错误出现,,这个错误说明,该镜像不包含bash的风格操作,没有这样的文件或目录,可能你的镜像基于busybox,他没有bash shell,但他在/bin/sh 有一个shell,可以使用以下命令调用
OCI runtime exec failed: exec failed: container_linux.go:337: starting container process caused “exec: “/bin/bash”: stat /bin/bash: no such file or directory”: unknown
docker exec -ti containerid /bin/sh
查看 JVM 信息
- jstack 查看线程堆栈信息
- jmap 导出内存堆栈信息
- jstat 统计gc 回收信息
- jinfo 统计gc 回收信息
这里可能会出现pid 为1导致openjdk 为8时打印不了堆栈信息,我将dockerfile 的openjdk改为11 后可以,但网上有其他方式解决,详情看:http://www.likecs.com/show-46716.html
报错信息:Unable to get pid of LinuxThreads manager thread
jstack 查看线程堆栈信息示例
jstack app 或者查看下pid 文件上的pid值
使用docker cp 将导出的文件复制到宿主机当前目录
# 其中 3a9a6bd0f396 为容器 containerid
docker cp 3a9a6bd0f396:1654.txt 1564.txt