原文地址

Docker 提供了重启策略,以控制容器在退出时是否自动启动,或在 Docker 重新启动时自动启动。重启策略可确保链接的容器以正确的顺序启动。Docker 建议使用重启策略,并避免使用流程管理器启动容器。

重启策略跟 dockerd 命令的 --live-restore 标志不同。使用 --live-restore 标志使得在 Docker 升级过程中容器可以保持运行,虽然网络和用户输入都中断了。

1. 使用重启策略

要为容器配置重启策略,使用 docker run 命令的时候添加 --restart 标志。--restart 标志的值可以是下面几个:

标志 描述
no 不自动重启容器(默认值)
on-failure 如果容器由于错误而退出,则将其重新启动,非零退出代码表示错误
unless-stopped 重新启动容器,除非明确停止容器或者 Docker 被停止或重新启动
always 只要容器停止了,就重新启动

下面例子的 Redis 容器会一直重启,除非明确停止这个容器或 Docker 重启了。

$ docker run -dit --restart unless-stopped redis

1.1 重启策略详情

使用重启策略时,记住以下几点:

  • 重启策略只在容器启动成功后才生效。这种情况下,成功启动的意思是容器运行 10 秒以上,并且 Docker 已经开始监控它。这可以防止根本不启动的容器进入重启循环。
  • 如果你手动停止一个容器,它的重启策略会被忽略,直到 Docker 守护进程重启或容器手动重启。这是防止重启循环的另一个尝试。
  • 重启策略只作用于容器。swarm 服务的重启策略配置方式不同。查看 与服务重启相关的标志

2. 使用进程管理器

如果重启策略无法满足你的需求,例如依赖 Docker 容器的 Docker 外部进程,可以使用进程管理器,例如 upstartsystemdsupervisor

警告:不要尝试将 Docker 重启策略与主机级进程管理器结合使用,因为这会产生冲突。

要使用进程管理器,请将其配置为使用通常用于手动启动容器的 docker startdocker service 命令启动容器或服务。有关更多详细信息,请参阅特定流程管理器的文档。

2.1 在容器内使用进程管理器

进程管理器也可以在容器内运行,以检查进程是否正在运行,如果没运行,则启动/重新启动进程。

警告:Docker 对这些无感知,只是在容器内监控操作系统进程。

Docker 并不推荐这种方法,因为它依赖于平台,甚至在给定的 Linux 发行版的不同版本中有所不同。

Docker 生产环境之配置容器 - 自动启动容器的更多相关文章

  1. [转]Docker 生产环境之配置容器 - 限制容器资源

    默认情况下,容器没有资源限制,可以使用主机内核调度程序允许的给定资源.Docker 提供了一些方法来控制容器可以使用多少内存.CPU 或块 IO,并设置 docker run 命令的运行时配置标志.本 ...

  2. 【Spring】使用@Profile注解实现开发、测试和生产环境的配置和切换,看完这篇我彻底会了!!

    写在前面 在实际的企业开发环境中,往往都会将环境分为:开发环境.测试环境和生产环境,而每个环境基本上都是互相隔离的,也就是说,开发环境.测试环境和生产环境是互不相通的.在以前的开发过程中,如果开发人员 ...

  3. Yarn 生产环境核心配置参数

    目录 Yarn 生产环境核心配置参数 ResourceManager NodeManager Container Yarn 生产环境核心配置参数 ResourceManager 配置调度器 yarn. ...

  4. 分离Webpack开发环境与生产环境的配置

    这是Webpack+React系列配置过程记录的第五篇.其他内容请参考: 第一篇:使用webpack.babel.react.antdesign配置单页面应用开发环境 第二篇:使用react-rout ...

  5. docker从零开始网络(七) 配置daemon和容器

    启用IPv6支持 在Docker容器或swarm服务中使用IPv6之前,需要在Docker守护程序中启用IPv6支持.之后,您可以选择将IPv4或IPv6(或两者)与任何容器,服务或网络一起使用. 注 ...

  6. wayne生产环境部署(360的容器发布平台-开源)

    参考文档 http://360yun.org/wayne/dev/develop-flow.html 使用rke部署k8s,详细过程见前面 文章,同时部署好kubectl 安装go yum insta ...

  7. Docker生产环境实践指南

    技术栈:1. 构建系统2. 镜像仓库3. 宿主机管理4. 配置管理5. 部署6. 编排7. 日志8. 监控 镜像:1. 如果用户像往常一样运行包安装命令,这些永远也用不上的缓存包文件将会永远地成为镜像 ...

  8. docker 生产环境基础应用

    项目背景 此项目是在已有项目基础上,开发的一套相对独立的系统.项目总体分为三部分,前端.中间应用服务.流媒体服务.前端技术选型为vue+elementui,中间应用服务为.net core webap ...

  9. Spring.profile实现开发、测试和生产环境的配置和切换

    软件开发过程一般涉及“开发 -> 测试 -> 部署上线”多个阶段,每个阶段的环境的配置参数会有不同,如数据源,文件路径等.为避免每次切换环境时都要进行参数配置等繁琐的操作,可以通过spri ...

随机推荐

  1. NOIP模拟92(多校25)

    前言 所以说这次是 HZOI 多校联测巅峰????(题目,数据过水??) T1 石子合并 解题思路 签到题. 发现我们可以给每个数字附一个正负号,每个数字的贡献就是它本身乘上这个符号. 发现至少应该有 ...

  2. linux 安装docker(一)

    1.安装环境 此处在Centos7进行安装,可以使用以下命令查看CentOS版本 lsb_release -a 在 CentOS 7安装docker要求系统为64位.系统内核版本为 3.10 以上,可 ...

  3. 热门剧本杀与 SaaS 的不解之缘

    近年来,"剧本杀"这种以剧本为核心,玩家分别扮演不同角色推理案情找出真凶的娱乐项目在年轻人的范围内迅速传开,已悄然形成了一个市场规模超百亿的新兴产业,吸引了大量淘金者.而在互联网时 ...

  4. Visual Studio 2022 初探 (vs2022附激活码)

    前言 Visual Studio 2022 正式版来了.新版本带有 go-live 许可证,可供生产使用.在 Visual Studio 2019 的基础上,新版集成开发坏境提供了非常多的改进,包括对 ...

  5. [linux]centos7.4上安装MySQL-8.0.11【完美安装】

    版本声明 centos7.4 MySQL-8.0.11 1.我用的阿里云的虚拟主机,刚从windows换到linux,需要装下常用工具 #安装下sz rz常用到上传下载的命令 yum install ...

  6. Java 多线程 - 总结概述

    概述 菜鸟教程: Java 给多线程编程提供了内置的支持. 一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务. 多线程是多任务的一种特别的形式,但多线程 ...

  7. Salesforce Consumer Goods Cloud 浅谈篇三之 行动计划(Action Plan)相关配置

    本篇参考: https://v.qq.com/x/page/f0772toebhd.html https://v.qq.com/x/page/e0772tsmtek.html https://v.qq ...

  8. MySQL 1064 错误

    ERROR 1064 : You have an error in your SQL syntax; check the manual that corresponds to your MySQL s ...

  9. Java设计模式之(五)——代理模式

    1.什么是代理模式 Provide a surrogate or placeholder for another object to control access to it. Proxy Patte ...

  10. [bzoj1052]覆盖问题

    先二分答案,容易发现一定有一个正方形覆盖在角上(即有两条边在最X的地方),否则4个最X的点一定无法覆盖,然后暴力确定即可 1 #include<bits/stdc++.h> 2 using ...