Press "Enter" to skip to content

从一个已经停止的docke容器里面将coredump文件提取出来分析

背景

我用docker在运行一个c++程序,由于程序有时候会奔溃,我就给容器做了个健康检查,如果发现挂了,就帮服务重新拉起。

但是由于默认的dump文件位置没有修改,dump位置也没有挂载出来导致后续想分析这个文件比较麻烦,如果想前期就挂在出来参考这个文章:https://ddanilov.me/how-to-configure-core-dump-in-docker-container

方案

将已经停止的容器commit成一个docker镜像

将这个镜像单独run起来

将镜像里面的coredump文件复制出来分析

#Commit the stopped container to a new image: test_image.
docker commit $CONTAINER_ID test_image
#Run the new image in a new container with a shell.
docker run -ti --entrypoint=sh test_image

操作

#找到容器的id
docker ps -a | grep vmangos

#将容器打包成镜像
docker commit ca2561e442be test_image

#运行这个镜像
docker run -ti --entrypoint=sh test_image

#新起命令行
#拿到新容器的id
docker ps | grep test_image

#将coredump文件复制出来分析
docker cp 1873d7e3d752:core.78 .

参考资料:

https://ddanilov.me/how-to-configure-core-dump-in-docker-container

https://stackoverflow.com/questions/48833905/how-to-list-files-in-a-stopped-docker-container

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注