如何在 docker 中的 sudo 中配置核心转储(`ulimit -c`)

如何在 docker 中的 sudo 中配置核心转储(`ulimit -c`)

我遇到了 Docker 容器中缺少核心转储的问题。我发现这个问题的根本原因是sudo重置了该ulimit -c值:

/$ ulimit -c 80
/$ ulimit -c
80
/$ sudo sh -c 'ulimit -c'
0
/$ sudo sh -c 'ulimit -c 70'
sh: 1: ulimit: error setting limit (Operation not permitted)

这里我在外壳中设置了 ulimit,这个设置是有效的。当我进入外壳时sudo,ulimit 会被忽略我无法再次将其设置为其他值。

我发现 EPERM 是由于软限制超出了硬限制,但我也无法更改硬限制。

我尝试的另一件事是配置 limits.conf。我在 dockerfile 中执行此操作以确保其生效:

RUN bash -c "echo 'root soft core 100' |sudo tee /etc/security/limits.conf"
RUN bash -c "echo 'session required pam_limits.so' |sudo tee -a /etc/pam.d/common-session"

但这也没有效果。

添加--privileged确实docker run有效,但我不想这样做。

答案1

较新版本sudo默认将核心大小限制重置为零。要保留以前的值,请将此语句添加到配置中:

Defaults rlimit_core=default

相关内容