当前位置: 首页 > 后端技术 > Java

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

时间:2023-04-01 16:30:43 Java

【Docker专栏7】容器自启动守护进程停止后容器保持存活主要包括三部分1、我们安装docker时,守护进程自动启动。启动dockerdaemon进程的命令如下,需要手动执行。systemctlstartdocker如果我们想在linux服务器启动的时候自动启动Docker守护进程,不需要人工干预,可以使用如下命令systemctlenabledocker.service;下面两条命令可以根据自己的需要使用。它可以在场景中使用。#删除dockerdaemon开机自启动配置systemctldisabledocker.service;#重新配置dockerdaemon开机自启动systemctlreenabledocker.service;二、容器自启动dockerdaemon自动启动后,如果我们想让一些容器能够跟随它也提供自启动和服务,在容器创建时使用如下命令即可:#注意`--restartunless-stopped`是一个关键的参数,可以实现自启动dockerrun-d--restartunless-stoppednginx如果我们有一个运行时容器,如果想让它增加容器自启动的能力,可以使用如下命令:dockerupdate--restartunless-stoppednginx重启策略说明unless-stopped是笔者比较常用的重启策略。另外,docker还提供了其他的重启策略,--restart的值可以是以下任意一个:restartstrategyflagdescriptionno不自动重启容器。(默认)on-failure[:max-retries]如果容器因程序执行错误退出(异常退出),则重启容器。可选配置:max-retries表示尝试重启容器的最大次数。如果超过这个数后启动失败,则不会重新启动。如果容器处于停止状态,则总是重启容器。例外:如果操作员手动停止了容器,则始终重启策略只会在Docker守护进程重启或容器本身手动重启后继续。unless-stopped在停止Docker守护进程之前已经处于停止状态的容器将不会执行重启。其他一如既往。为什么我经常使用unless-stopped重启策略?一台服务器上有很多容器,我手动停止了其中一些(主动行为)。即使在重新启动服务器或重新启动docker守护程序后,我也不希望这些容器自动运行。所以我不总是使用。在重启服务器或重启docker守护进程之前,容器处于良好的运行状态。重启服务器或者重启docker守护进程后,一般不会出现程序运行错误无法重启的问题,所以我没有使用on-failure。3、守护进程停止时保证容器服务正常本节的主要内容是:如果我们要升级docker的版本,需要停止docker的守护进程,但又不想影响服务由容器提供给用户。即:dockerdaemon进程停止了,你想保证docker容器进程还在运行,怎么办?默认情况下,当Docker守护进程终止时,它会关闭所有基于它运行的容器。但它可以配置为在守护进程不可用时保持容器运行。此功能称为实时还原。live-restore有助于减少容器因守护程序崩溃、计划中断或升级而停止服务的时间。{"live-restore":true}配置方法是在/etc/docker/daemon.json配置文件中加入上面一行,这样daemon进程停止后,容器不会停止服务。欢迎关注我的公告号:字母哥杂谈,回复003赠送本文所在专栏《docker修炼之道》的PDF版,以及30多篇docker优质文章。Antetokounmpo博客:zimug.com