原文地址

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. Docker学习:起步篇

    Docker-概述 学习资源 最好的资源在官网! Docker官方: Docker 官方主页: https://www.docker.com(opens new window) Docker 官方博客 ...

  2. D3.js V5 教程

    D3.js V5 教程 1.在项目中使用D3.js 2. 选择元素和设置(获取)属性 3. 绑定数据 4. 理解Update.Enter.Exit 与 添加.删除元素 未完待续..........

  3. 权限控制-RBAC(Role-Based Access Control)

    RBAC是基于角色的权限访问控制,在RBAC中角色与权限相连,用户通过成为某个角色而得到角色的权限,这就极大的简化了权限的管理,用户和角色多对多,角色和权限多对多,由此产生用户表.角色表.权限表,用户 ...

  4. 设计模式学习-使用go实现装饰模式

    装饰器模式 定义 代码实现 优点 缺点 适用范围 装饰器模式和桥接模式的区别 参考 装饰器模式 定义 装饰模式:动态的给一些对象添加额外的职责,就增加功能来说,装饰模式比生成子类更灵活. 举个栗子: ...

  5. .NET Protobuf包装器库

    Wodsoft Protobuf Wrapper 内容 关于 需求 安装 用法 序列化 反序列化 字段定义 字段排序 非空构造函数对象 获取Protobuf包装器 高级 支持的属性类型与Protobu ...

  6. Elasticsearch写入数据的过程是什么样的?以及是如何快速更新索引数据的?

    前言 最近面试过程中遇到问Elasticsearch的问题不少,这次总结一下,然后顺便也了解一下Elasticsearch内部是一个什么样的结构,毕竟总不能就只了解个倒排索引吧.本文标题就是我遇到过的 ...

  7. Java-ASM框架学习-从零构建类的字节码

    Tips: ASM使用访问者模式,学会访问者模式再看ASM更加清晰 什么是ASM ASM是一个操作Java字节码的类库 学习这个类库之前,希望大家对Java 基本IO和字节码有一定的了解. 高版本的A ...

  8. 架构师必备:巧用Canal实现异步、解耦的架构

    本文介绍如何应用Canal实现异步.解耦的架构,后续有空再写文章分析Canal原理和源代码. Canal简介 Canal是用来获取数据库变更的中间件. 伪装自己为MySQL从库,拉取主库binlog并 ...

  9. 一些 tips

    在本博客中,一般写题解的题都是我认为比较有价值的题,然而我还做过一些有一定价值,但并没有达到值得写一篇题解的程度,故将这些题目总结出的套路用一句话概括在这里: 当然如果看到我太久不更请在评论区里催我一 ...

  10. 【2020五校联考NOIP #8】自闭

    题目传送门 题意: 有一个 \(n \times m\) 的矩阵,里面已经填好了 \(k\) 个非负整数. 问是否能在其它 \(n \times m-k\) 个格子里各填上一个非负整数,使得得到的矩阵 ...