首页/云/云与容器速查/docker restart 重启容器
容器与 Docker106 条

docker restart 重启容器

stop + start 的组合:常用于改配置文件后让应用重新加载;频繁重启是症状不是方案,应找到根因。

云与容器速查云更新于 2026-10-13

docker restart 是什么

docker restart 等于先 stop 再 start:给容器内进程发停止信号,等待超时后强制杀掉,再以原有配置重新启动。它常用于改完配置文件后让应用重新加载,但重启期间服务是中断的,而且频繁重启只是掩盖症状。优先考虑应用自身的平滑重载能力,其次才是重启容器。

基本信息

本质先 stop(可带 -t 指定超时秒数)再 start
配置保留容器创建参数不变,挂载、网络、环境变量都沿用
场景应用不支持热加载时的兜底手段;验证自愈能力
中断影响重启期间服务不可用,多实例需逐个滚动重启
替代方案优先用应用内重载,如 nginx -s reload、systemctl reload

典型使用场景

  • 改配置后重载:应用不支持热加载,重启是最直接的生效方式
  • 验证自动拉起:配合重启策略测试进程崩溃后的自愈流程
  • 释放文件句柄:日志文件被删除但句柄未释放,重启后空间归还
  • 更新环境变量:容器创建参数已固定,变更需重建容器而非重启
  • 恢复假死进程:进程还在但已不响应,重启比逐个排查更快恢复

重启示例

重启示例
docker restart myapp                  # 默认等待 10 秒后强制结束
docker restart -t 30 myapp            # 给应用 30 秒优雅退出时间
docker restart $(docker ps -q --filter "name=web")   # 批量重启同类容器
# 优先尝试应用内重载,避免整个容器中断
docker exec nginx nginx -s reload
docker logs --tail 100 --since 5m myapp   # 重启后确认启动是否正常

重启相关操作对比

操作是否保留容器是否中断服务适用场景
docker restart保留中断改配置后重新加载
docker stop 加 start保留中断需要分步观察启动过程
docker exec 内重载保留通常不断应用支持平滑重载
docker rm 后 run重建中断需要改端口、挂载等创建参数
滚动重启逐个保留单实例短暂中断集群多副本部署
给容器配 --restart=unless-stopped 后进程崩溃会被自动拉起;如果观察到重启风暴,应当去日志里找崩溃根因,而不是靠人工反复重启。
单机多实例服务不要同时重启全部容器:会造成整体服务中断。按实例分批滚动,确认前一批恢复健康后再处理下一批。

易错点

  • 单机多实例同时重启,服务整体不可用
  • 把 restart 当万能药,配置错误与内存泄漏等根因被一直掩盖
  • 重启前没看日志,重启后问题复现但现场已经丢失
  • 以为重启能应用新的环境变量或挂载,实际这些是创建参数,必须重建容器

数据来源与参考

  • Docker Docs:docker restart

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌