如何在 alpine 容器中生成 coredump 文件

zit*_*sen 1 alpine-linux

我正在尝试开发一个开源 TSDB TDengine,并在 alpine 中编译它以使其 Docker 化。编译后,只需运行taosd二进制文件,就会导致段错误(coredumped),但我找不到核心文件。

我已经搜索并使用 sysctl 来设置核心模式,并且 ulimic -c 是无限的。但它未能应用 sysctl,如下所示。

# ulimic -c
unlimited
# sysctl -w kernel.core_pattern=core-%e.%p.%h.%t
sysctl: error setting key 'kernel.core_pattern': Read-only file system
Run Code Online (Sandbox Code Playgroud)

如何在alpine中生成core文件?

zit*_*sen 6

我终于找到了解决方案:

docker run -it --rm --ulimit core=-1  --privileged -v $PWD:/coredump <myimage> bash
Run Code Online (Sandbox Code Playgroud)

在容器中,设置核心模式并运行应用程序:

sysctl -w kernel.core_pattern=/coredump/core-%e.%p.%h.%t
app # coredumped to /coredump/ directory
Run Code Online (Sandbox Code Playgroud)

由于我们将 $PWD 挂载到 /coredump,因此我们可以在当前目录中看到 core 文件。