如何在docker中产生core文件

原文链接:如何在docker中产生core文件
发布时间:2021-11-18 23:16:50

文章目录

前言

对于C/C++程序运行在docker容器中,希望它崩溃的时候能产生core文件,便于排查问题,这是十分必要的。

由于docker容器的权限问题,默认无法产生core文件,需要做一些配置修改。

1 修改docker运行参数

在 docker-compose 配置中添加以下参数:

1
2
3
4
5
6
7
8
security_opt:
- seccomp:unconfined
privileged: true ### 主要是这一项
cap_add:
- SYS_PTRACE
- SYS_ADMIN
ulimits:
core: -1

2 修改docker启动脚本

在容器启动脚本中,设置 core 文件大小限制:

1
ulimit -c unlimited

同时在系统层面设置 core 文件的输出路径和命名格式:

1
echo "/data/coredump/core.%e.%p" > /proc/sys/kernel/core_pattern