【docker专栏7】容器自启动与守护进程停止后容器保活

本文为大家介绍容器自启动以及docker 守护进程挂掉或者docker升级的情况下,如何保证容器服务的正常运行。主要包含三个部分

一、守护进程开机自启

在我们安装docker的时候,介绍过启动docker守护进程的命令如下,需要人工手动执行。

systemctl start docker

如果我们希望在linux服务器启动的时候,就自动启动Docker守护进程,无需人工干预,就使用下面的命令即可

systemctl enable docker.service;

下面的两个命令大家根据自己的需要,在合适的场景下使用即可。

删除docker守护进程开机自启动配置
systemctl disable docker.service;
重新配置docker守护进程开机自启动
systemctl reenable docker.service;

二、容器自启动

docker守护进程自动启动之后,假如我们希望某些容器能够随之也自启动提供并服务,在容器创建时使用如下命令即可:

注意--restart unless-stopped是能够实现自启动的关键参数
docker run -d --restart unless-stopped nginx

如果我们已经存在一个运行时容器,想让它增加容器自启动的能力,使用如下命令即可

docker update --restart unless-stopped nginx

重启策略说明

unless-stopped是笔者比较常用的重启策略,除此之外docker还提供了其他的重启策略, --restart的值可以是以下任何一种:

重启策略标志 描述 no

不要自动重启容器。(默认) on-failure[:max-retries]

如果容器因程序运行错误退出(非正常退出),则重新启动容器。可选项配置 :max-retries

表示尝试重新启动容器的最大次数,超过这个次数还启动失败就不重启了。 always

如果容器处于停止状态,则始终重新启动容器。例外情况:如果该容器是运维人员手动停止的,只有在Docker守护进程发生重启或者容器本身手动重启之后,才会继续always重启策略。 unless-stopped

在停止Docker守护程序之前已经处于停止状态的容器,不会执行重启。其他的和always一样。

为什么我常常使用unless-stopped重启策略?

  • 一个服务器上有很多容器,其中一些是我手动停止的(主动行为)。这些容器即使重启服务器或重启docker守护进程之后,我也不希望它们自动运行。所以我不用always。
  • 在重启服务器或重启docker守护进程之前,处于良好运行状态的容器,在重启服务器或重启docker守护进程之后,通常也不会出现因程序运行错误导致的无法重启的问题,所以我不用on-failure。

三、守护进程停止期间保证容器服务正常

本文以上讨论的都是服务器重启、docker守护进程重启之后如何保证容器的运行状态,并且尽量不需要人工参与。本小节主要说明的内容是:假如我们要升级docker的版本,我们要停止docker的守护进程,但是我们不想影响容器向用户提供服务。即: docker守护进程停了,想要保证docker容器进程仍然运行,这该怎么做?

默认情况下,当 Docker 守护进程终止时,它会关闭基于它运行的所有容器。但是可以通过配置方式,在守护程序进程不可用时保持容器运行。此功能称为 live-restore。live-restore有助于减少由于守护进程崩溃、计划中断或升级导致的容器停止服务的时间。

{
  "live-restore": true
}

配置方式就是在 /etc/docker/daemon.json配置文件中加入上面的一行,这样守护进程停止之后,容器不会停止服务。
字母哥博客:zimug.com

【docker专栏7】容器自启动与守护进程停止后容器保活

Original: https://www.cnblogs.com/zimug/p/16516162.html
Author: 字母哥博客
Title: 【docker专栏7】容器自启动与守护进程停止后容器保活

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/615329/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 从wav到Ogg Opus 以及使用java解码OPUS

    PCM 自然界中的声音非常复杂,波形极其复杂,通常我们采用的是脉冲代码调制编码,即PCM编码。PCM通过抽样、量化、编码三个步骤将连续变化的模拟信号转换为数字编码。 采样率 采样频…

    Java 2023年5月29日
    072
  • [研究]SpringBoot-MybatisPlus-Dynamic(多数据源)

    特性 1. 支持 数据源分组 ,适用于多种场景 纯粹多库 读写分离 一主多从 混合模式。 2. 支持数据库敏感配置信息 加密 ENC()。 3. 支持每个数据库独立初始化表结构sc…

    Java 2023年6月9日
    082
  • 反射和注解

    1.1 类加载 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过类的加载,类的连接,类的初始化这三个步骤来对类进行初始化。如果不出意外情况,JVM将会连续完成这三个步…

    Java 2023年6月6日
    089
  • springmvc框架快速入门

    (1)创建一个maven得web工程 (2)引入springmvc的依赖 1 2 3 org.springframework 4 spring-webmvc 5 5.3.4 6 7…

    Java 2023年6月5日
    082
  • Duplicate entry ** for key **

    Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplica…

    Java 2023年6月5日
    069
  • JPA 入门实战(1)–简介

    JPA(Java Persistence API) 是 SUN 公司推出的一套 ORM 规范,充当 Java 对象和关系数据库系统之间的桥梁;本文主要介绍其基本概念。 1、JPA …

    Java 2023年6月16日
    079
  • 关于JS精度缺失问题

    问题描述 在Java后端传一个比较大的Long值的时候 前端接收值的时候会出现精度的缺失: 解决办法 添加一个转换类 点击查看代码 public class JacksonObje…

    Java 2023年6月9日
    084
  • 从餐厅服务员到一线互联网电商程序员 (中)

    本系列文章分三部分: 上: 餐厅、洗浴会所打工经历中: 大学求学创业经历下: 互联网从业经历 本文为第二部分,关注 “真香号”,及时阅读其它篇章。 接上文:…

    Java 2023年6月7日
    081
  • java学习之MybBaits

    0x00前言 我前面使用的jdbc和jdbc的工具类集成的但是它们在少部分代码的情况下会会简单,但是以后如果项目较大jdbc的固定代码会很难维护,如果使用框架会简单很多,也标志着j…

    Java 2023年6月13日
    077
  • Spring AOP

    AOP简介: 面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。 *作用:在不惊动原始设计的基础上为其进行功能增强。 AOP核心概念 (1)Aspec…

    Java 2023年6月6日
    075
  • 从零开始实现放置游戏(十五)——实现战斗挂机(6)在线打怪练级

    本章初步实现游戏的核心功能——战斗逻辑。 战斗系统牵涉的范围非常广,比如前期人物的属性、怪物的配置等,都是在为战斗做铺垫。 战斗中,人物可以施放魔法、技能,需要技能系统支持。 战斗…

    Java 2023年6月5日
    078
  • 【Java面试】大厂裁员,小厂倒闭,如何搞定面试官Java SPI是什么?有什么用?

    “Java SPI是什么?有什么用?”这是阿里p6面试过程中,第二面的时候遇到的一个真实的问题。如果你不理解SPI,建议你看完整个视频。大家好,我是Mic,…

    Java 2023年6月16日
    091
  • Home Assistant接入HomeKit与简要介绍

    在HomeAssistant中接入HomeKit后可以使用iPad或iPhone的家庭App控制已接入HA的设备,如HA接入了很多小米智能家居设备,HA接入HomeKit后就可以使…

    Java 2023年6月16日
    094
  • C++基础-异常处理

    C++异常处理(较浅) 基本概念 异常处理,是编程语言或计算机硬件里的一种机制,用于处理软件或信息系统中出现异常的情况,保证程序运行的稳定性和健壮性,防止程序崩溃。但是过渡使用会影…

    Java 2023年6月5日
    072
  • 获取数组子序列

    /** * 位对应法 * * @param array */ public void place(int[] array) { //获取数据长度 那么对应的就是二进制字节位数1存在…

    Java 2023年6月5日
    057
  • Linux 压缩、解压缩命令

    Linux 压缩、解压缩命令 tar 语法命令 tar [options…] [files] options:选择描述-A 追加tar文件至归档-c 创建一个新文档-d…

    Java 2023年6月15日
    071
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球