小编era*_*mos的帖子

“管道”核心模式不会在 docker 容器内创建核心转储

考虑这个简单的“管道”核心模式:

vagrant@myhost:~$ cat /proc/sys/kernel/core_pattern                        
|/var/core-manager.sh %t
Run Code Online (Sandbox Code Playgroud)

拥有这个同样简化的核心管理器脚本:

vagrant@myhost:~$ cat /var/core-manager.sh 
#!/bin/bash
(
  file=/tmp/mycore.$1
  cat > $file < /dev/stdin
)
Run Code Online (Sandbox Code Playgroud)

现在在 Linux 主机中重现并检索核心转储:

vagrant@myhost:~$ ls -lrt /tmp/mycore*
total 0
vagrant@myhost:~$ ulimit -c unlimited
vagrant@myhost:~$ sleep 100 &
[1] 16647
vagrant@myhost:~$ kill -SIGSEGV 16647
[1]+  Segmentation fault      (core dumped) sleep 100
vagrant@myhost:~$ ls -lrt /tmp/mycore*
-rw-rw-rw- 1 root root 385024 Jan 28 18:42 /tmp/mycore.1580233332
Run Code Online (Sandbox Code Playgroud)

现在,在容器(比方说 busybox)内重现它:

(正如你们许多人可能知道的那样,核心模式是由容器继承的,尽管 ulimit 不是,因为它取决于调用 shell,但可能“无限制”是 busybox shell 中的默认值,因为问题是我有无限的 ulimit对于容器内的核心大小“什么都不做”,这就是我真正想要的)。

vagrant@myhost:~$ docker run -it --rm busybox
/ # …
Run Code Online (Sandbox Code Playgroud)

coredump busybox docker

5
推荐指数
0
解决办法
2169
查看次数

标签 统计

busybox ×1

coredump ×1

docker ×1