Docker从入门到精通——堆栈跟踪

堆栈跟踪

一、强制记录堆栈跟踪

  • Linux:

     sudo kill -SIGUSR1 $(pidof dockerd)
  • 视窗服务器:

    下载docker-signal

    获取 dockerd 的进程 ID Get-Process dockerd

    运行带有标志的可执行文件--pid=<PID of daemon>

  这会强制记录堆栈跟踪,但不会停止守护进程。守护程序日志显示堆栈跟踪或包含堆栈跟踪的文件的路径(如果已记录到文件)。

  守护程序在处理SIGUSR1信号并将堆栈跟踪转储到日志后继续运行。堆栈跟踪可用于确定守护进程中所有 goroutine 和线程的状态。

二、查看堆栈跟踪

  可以使用以下方法之一查看 Docker 守护进程日志:

  • 通过 journalctl -u docker.service 在 Linux 系统上运行使用 systemctl
  • /var/log/messages/var/log/daemon.log, 或 /var/log/docker.log 在较旧的 Linux 系统上

笔记

无法在 Docker Desktop for Mac 或 Docker Desktop for Windows 上手动生成堆栈跟踪。但是,如果遇到问题,您可以单击 Docker 任务栏图标并选择疑难解答以向 Docker 发送信息。

  在 Docker 日志中查看如下消息:

...goroutine stacks written to /var/run/docker/goroutine-stacks-2017-06-02T193336z.log
...daemon datastructure dump written to /var/run/docker/daemon-data-2017-06-02T193336z.log

  Docker 保存这些堆栈跟踪和转储的位置取决于您的操作系统和配置。您有时可以直接从堆栈跟踪和转储中获得有用的诊断信息。否则,您可以将此信息提供给 Docker 以帮助诊断问题。

posted @ 2022-06-08 16:12  左扬  阅读(255)  评论(0编辑  收藏  举报
levels of contents