You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker/Docker Compose随机停止重启所有容器问题排查咨询

根因初步判断

从你提供的两类容器日志可直接确认:容器并非因内部服务故障、内存溢出、存储不足崩溃退出,而是收到了宿主机层面的主动停止信号后执行优雅关闭,后续因容器配置的重启策略被自动拉起。
PostgreSQL日志中received fast shutdown request、Nginx日志中signal 3 (SIGQUIT) received, shutting down都是外部触发停止的明确特征。

可能的触发原因

  • 宿主机未排查到的定时任务
    你仅核查了当前用户的crontab存在遗漏,需检查全系统定时规则:
    • 系统级crontab路径:/etc/crontab、/etc/cron.d/目录下所有文件、/etc/cron.hourly/等周期任务目录
    • 所有用户的crontab:执行for user in $(cut -f1 -d: /etc/passwd); do echo $user; crontab -u $user -l; done 批量排查
    • systemd定时器:执行systemctl list-timers --all排查,这类定时任务不会出现在crontab列表中,极易被遗漏
  • Docker守护进程重启
    检查Docker daemon运行日志,执行命令:
    journalctl -u docker.service --since "2021-10-05 10:00" --until "2021-10-05 10:30"
    如果Docker daemon在对应时间点发生重启,且未开启live-restore配置,会默认停止所有运行中容器,daemon恢复后按容器重启策略自动拉起容器。
  • 第三方运维/管控工具触发
    如果宿主机接入了以下类型的工具,需排查对应规则:
    • 自动化运维平台的定时执行任务、资源自愈规则
    • 容器自动更新工具的镜像更新规则
    • 云服务商的容器实例健康检查、自动修复策略
    • 主机入侵检测、安全审计工具的处置规则
  • 系统定时更新任务
    部分系统默认开启的包自动更新任务,若更新了Docker、containerd等相关组件,会触发服务重启,连带停止所有运行中容器。

建议排查步骤

  1. 提前在宿主机执行docker events > docker_events.log,留存下次触发时的Docker全量事件日志,可直接定位容器停止指令的发起方
  2. 导出对应时间点的系统日志:Debian/Ubuntu查看/var/log/syslog,CentOS/RHEL查看/var/log/messages,排查10:20-10:40之间的所有系统动作
  3. 检查所有容器的重启策略,确认是否统一配置了always或unless-stopped,符合故障时自动重启的特征

内容的提问来源于stack exchange,提问作者A.J

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 04:18:03