Docker Compose不感知异常类型,仅依据容器主进程退出码和restart策略决定是否重启:always无条件重启,unless-stopped排除手动停止,on-failure仅非零退出码重启(可限次),no不重启;需配合healthcheck识别假活,并通过logs和inspect查退出码(如137为OOM)定位根因。
Docker Compose 本身不直接监控或干预容器内部的异常中断(比如应用 panic、段错误、空指针崩溃等),它依赖 Docker 引擎提供的 重启策略(restart policy) 来响应容器进程退出这一结果。换句话说,Compose 不“感知”异常类型,只关心容器主进程是否退出,以及退出码是否符合预设条件。
当容器内应用崩溃导致主进程退出时,Docker 守护进程会捕获退出状态,并根据你配置的 restart 字段决定是否重启容器:
always,但若你手动执行过 docker stop,则不再自动拉起——生产环境最常用on-failure:3)——避免无限崩溃重启循环单纯靠进程退出码有局限:有些应用进程没死,但已卡死或无法响应请求(例如死锁、内存泄漏后假活)。这时单靠 restart 策略无法触发恢复。建议在 Compose 中启用 healthcheck:
curl -f http://localhost/health || exit 1)unhealthy
容器异常中断后,第一时间应查看日志确认根本原因:
docker compose logs -f <service> 实时跟踪输出docker compose ps 查看当前状态和退出码(Exit Code 列)docker inspect <container> 查看 State.FinishedAt 和 State.ExitCode
盲目使用 restart: always 可能让故障“静默持续”:
deploy.resources.limits)和监控告警,而非仅依赖自动重启TPLink TLWDR4320 无线路由器IP带宽控制功能分配带宽设置方法
SQL Server 2008及更高版本数据库恢复做法之日志尾部备份实用指南
TPLink TLWDR4320 无线路由器控制管控小孩上网行为设置
TPLink TLWDR4320 无线路由器打印服务器设置指南
TPLink TLWDR8620 52 无线路由器当作交换机使用教程
TPLink TLWDR8620 52 无线路由器映射服务器到外网操作方法