如何给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"
相关推荐
杨浦老苏21 小时前
自托管网络监控工具LanLens
网络·docker·监控·群晖
剩下了什么1 天前
docker-compose up -d --build 和 docker-compose up -d 和 docker-compose build 区别
docker·容器·eureka
Zender Han1 天前
常见 Docker 命令介绍与使用指南
docker
两点王爷1 天前
使用命令行备份/还原docker运行的数据库 (MySQL、PostgreSQL)
mysql·docker·容器
张青贤1 天前
Docker Remote 未授权访问漏洞修复方法
运维·docker·容器
小夏子_riotous1 天前
Docker学习路径——10、Docker Compose 一站式编排:从入门到生产级部署
linux·运维·服务器·docker·容器·centos·云计算
smallcelebration1 天前
132 docker入门学习
学习·docker·容器
AI服务老曹1 天前
突破芯片壁垒:基于 Docker 与异构计算架构的工业级 AI 视频管理平台深度解析
人工智能·docker·架构
旧故新长1 天前
部署自动发卡网站的问题和解决方案
linux·docker
hiwb1 天前
Docker 安装 MySQL,DBeaver 连接 MySQL
mysql·docker·容器