如何给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"
相关推荐
Patrick_Wilson5 天前
从「改个端口」到 502:Next.js on k8s 的容器端口、Service 映射与 env 覆盖
docker·kubernetes·next.js
Suroy5 天前
DockerView-Go:用 Go 写一个终端 Docker 监控工具,顺便做了个 Web 仪表盘
docker
云恒要逆袭5 天前
运行你的第一个Docker容器
后端·docker·容器
宋均浩6 天前
# Docker 镜像瘦身实战:从 1.2G 到 80MB 的五个优化步骤
ci/cd·docker
程序员老赵7 天前
10 分钟部署 OpenCode:Docker 一键安装,浏览器打开就能用 AI 写代码(附完整命令与排错)
docker·容器·ai编程
WangMingHua1117 天前
LM Studio Docker 部署——本地大模型一键启动
docker
曲幽8 天前
别再用网页翻译看源码了!你的私人翻译神器LibreTranslate,部署避坑指南来了
python·docker·web·pot·translate·libretranslate·arogstranslate
武子康10 天前
调查研究-183 Apple container:Mac 上用轻量 VM 跑 Linux 容器,Swift 会改写本地容器体验吗?
docker·容器·apple
Alsn8613 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
程序员老赵13 天前
服务器没有桌面?Docker 跑个 Chrome,浏览器就能远程用
docker·容器·devops