• 【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
    字母哥博客

  • 相关阅读:
    如何撰写shopee产品的标题—扬帆凌远
    访问者模式(Visitor Pattern)
    基于双向LSTM模型进行电力需求预测(Matlab代码实现)
    Guava常用方法
    计算机图形学(九)-纹理的应用,环境贴图、凹凸贴图、法线贴图、位移贴图
    Spring源码深度解析:十、bean的属性注入④ - populateBean
    Alkyne-PEG-Amine,Alkyne-PEG-NH2 炔基PEG氨基
    解决docker Error response from daemon故障
    [基础库Numpy] 技能树总结:一篇文章学会Numpy库
    前端面试之事件循环
  • 原文地址:https://www.cnblogs.com/zimug/p/16516162.html