我想修改core_pattern构建docker镜像时的内容,我的docker文件是这样的:
FROM centos:7
RUN echo "core-%e" > /proc/sys/kernel/core_pattern
Run Code Online (Sandbox Code Playgroud)
然后我运行docker build并得到一个错误
/bin/sh: /proc/sys/kernel/core_pattern: Read-only file system
Run Code Online (Sandbox Code Playgroud)
有人帮忙吗?
主机和容器中不可能同时具有不同的 core_pattern,因为 docker 与其主机共享内核。
但是,您可以在特权模式下运行容器,并在启动/运行时从容器内部更改 core_pattern(在 CMD 部分修改 core_pattern 或从内部执行 os 命令)。
但请记住,容器完成后此设置不会自动恢复(除非您以编程方式执行此操作)。
我自己也需要这个,我刚刚知道如何做。它与 docker 无关,而是与一般的 linux 有关。我正在使用 ubuntu,并且我 99% 确定 centos 在这方面也会表现相同。
它是通过sysctl命令编辑的。
参见示例
bash$ cat /proc/sys/kernel/core_pattern
|/usr/share/apport/apport %p %s %c %d %P %E
bash$ sudo sysctl -w kernel.core_pattern="|/usr/share/apport/apport-kde %p %s %c %d %P %E"
kernel.core_pattern = |/usr/share/apport/apport-kde %p %s %c %d %P %E
bash$ cat /proc/sys/kernel/core_pattern
|/usr/share/apport/apport-kde %p %s %c %d %P %E
bash$
Run Code Online (Sandbox Code Playgroud)
请注意,以 开头的值|表示命令。核心转储将作为 STDIN 发送到命令
既然您问了有关 docker 的问题,那么让我也提供一个兼容的答案。
FROM centos:7
RUN sudo sysctl -w kernel.core_pattern="core-%e"
Run Code Online (Sandbox Code Playgroud)
有关可以在文件中使用的核心模式的更多信息,而不仅仅是 %e,请参阅https://sigquit.wordpress.com/2009/03/13/the-core-pattern/
还有另一个相关的问题/答案,有更多细节
https://unix.stackexchange.com/questions/343275/why-is-editing-core-pattern-restricted
| 归档时间: |
|
| 查看次数: |
12447 次 |
| 最近记录: |