如何给docker容器加上守护进程
·
一、让容器以后台模式运行(Detached Mode)
这是最基础的“守护”方式,使用 -d 参数让容器在后台运行:
# 基础用法
docker run -d --name myapp nginx
# 结合端口映射
docker run -d -p 8080:80 --name web nginx
✅ 说明:
-d(detached)参数使容器脱离当前终端在后台运行,但容器本身仍可能因应用退出而停止,这不是真正的“守护”。
二、配置自动重启策略(推荐方案)
要实现真正的“守护”效果(容器崩溃/宿主机重启后自动恢复),应使用 --restart 策略:
# 常用策略
docker run -d --restart=always --name myapp nginx # 总是重启
docker run -d --restart=unless-stopped --name myapp nginx # 除非手动停止
docker run -d --restart=on-failure:3 --name myapp nginx # 失败时最多重试3次
策略对比:
| 策略 | 行为 | 适用场景 |
|---|---|---|
no | 不自动重启(默认) | 开发调试 |
on-failure[:max-retries] | 仅退出码非0时重启 | 有明确失败条件的服务 |
unless-stopped | 除非手动 docker stop,否则总是重启 | 生产环境推荐 |
always | 总是重启(包括手动停止后重启Docker daemon) | 需要绝对高可用 |
⚠️ 注意:Docker 重启策略仅在容器成功运行 10秒以上 后才生效,避免陷入崩溃循环 [[5]]
使用 docker-compose 配置(生产推荐)
version: '3.8'
services:
web:
image: nginx
restart: unless-stopped # 推荐生产环境使用
ports:
- "80:80"
更多推荐
所有评论(0)