如何给docker容器加上守护进程

一、让容器以后台模式运行(Detached Mode)

这是最基础的"守护"方式,使用 -d 参数让容器在后台运行:

bash 复制代码
# 基础用法
docker run -d --name myapp nginx

# 结合端口映射
docker run -d -p 8080:80 --name web nginx

✅ 说明 :-d(detached)参数使容器脱离当前终端在后台运行,但容器本身仍可能因应用退出而停止,这不是真正的"守护"。

二、配置自动重启策略(推荐方案)

要实现真正的"守护"效果(容器崩溃/宿主机重启后自动恢复),应使用 --restart 策略:

bash 复制代码
# 常用策略
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 配置(生产推荐)

yaml 复制代码
version: '3.8'
services:
  web:
    image: nginx
    restart: unless-stopped  # 推荐生产环境使用
    ports:
      - "80:80"
相关推荐
todoitbo8 小时前
群晖NAS部署JmalCloud:Docker安装、文件管理、博客与公网访问完整教程
运维·docker·容器
是枚小菜鸡儿吖15 小时前
Home Assistant跨品牌智能家居教程:Docker部署、米家接入、vivo桥接与远程访问
docker·容器·智能家居
螺蛳粉 螺蛳粉18 小时前
第 02 篇:镜像分层与 containerd 2.x 实战:SystemdCgroup 与 pause 镜像配置踩坑(底座认知 02)
docker·云原生·容器·kubernetes·etcd·containerd·kube-apiserver
wefg118 小时前
【Docker】镜像相关指令
运维·docker·容器
java_logo19 小时前
Docker 部署 DPanel:轻松搭建轻量容器管理平台
运维·docker·容器·podman·容器管理·dpanel·轩辕镜像
死磕音视频19 小时前
Open WebUI 入门:用 Docker 装上本地对话界面并连接 Ollama
docker·ollama·本地大模型·open webui
分布式存储与RustFS20 小时前
CI 老被 Docker Hub 的 429 卡住,自建 Registry 把镜像搬进内网
运维·docker·开源·镜像仓库·对象存储·ci·rustfs
n1121220 小时前
Docker 容器时区错 8 小时:3 个坑
运维·docker·容器·故障排查·服务器运维·容器时区
慈云数据21 小时前
用 DSH 辅助部署一个网站监控平台:Uptime Kuma + Docker 实战
运维·docker·容器
螺蛳粉 螺蛳粉1 天前
第 03 篇:为什么 K8s 的最小调度单元是 Pod 而不是容器:pause 容器与边车模式(底座认知 03)
docker·云原生·容器·kubernetes·etcd·运维排障·kube-apiserver