Docker容器自启动的实现方法

 更新时间:2018年09月29日 10:39:57   作者:温暖的电波  
这篇文章主要介绍了Docker容器自启动的实现方法,详细的介绍了Docker的 Restart policy命令,非常具有实用价值,需要的朋友可以参考下

容器自启动

Docker提供了restart policy机制,可以在容器退出或者Docker重启时控制容器能够自启动。这种Restart policy可以保证相关容器按照正确顺序启动。虽然也可以通过进程监控的方式(如systemd)来完成这种动作,但Docker还是建议尽量避免使用进程监控的方式来 "自启动" 容器。

Docker的 Restart policy与dockerd命令的--live-restore启动标志还有区别:--live-restore标志可以在Docker升级的时候保证容器继续运行,但是网络以及用户终端输入会被中断。

那到底什么是restart policy呢?我们来看看实际的情况吧。

使用restart policy

restart policy在使用docker run启动容器时通过--restart标志指定,这个标志有多个value可选,不同的value有不同的行为,如下表所列:

Flag Description
no 不自动重启容器. (默认value)
on-failure  容器发生error而退出(容器退出状态不为0)重启容器
unless-stopped  在容器已经stop掉或Docker stoped/restarted的时候才重启容器
always  在容器已经stop掉或Docker stoped/restarted的时候才重启容器

举个例子:下面的命令启动一个Redis容器,当Redis容器停止后或者Docker被重启时,Redis容器都会重启。

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

Restart policy细节

使用restart policies时需要注意如下细节:

(1) 容器只有在成功启动后restart policy才能生效。这里的"成功启动"是指容器处于up至少10秒且已经处于docker监管。这是避免没有成功启动的容器陷入restart的死循环。

(2)如果手动(manually)的stop(与前面的explicitly stopped有何区别)一个容器,容器设置的restart policy将会被忽略,除非Docker daemon重启或者容器手动重启。这是避免了另外一种死循环。

(3)restart policies只能用于容器,对于swarm services其restart policies有不通过的配置。

 进程监控

如果上面讲的restart policies无法满足需求,也可以采用进程监控的管理方案,如upstart,systemd或者supervisor等等。

这种方案中,进程监控服务运行在容器中。它可以监控一个进程是否运行,并可以在此进程没有运行的时候去启动该进程。而这发生的一切Docker都毫无知觉。

Docker不推荐此种方法来进行进程监控,理由很简单,这种方法和系统平台甚至linux发行版相关。

原文:https://docs.docker.com/engine/admin/start-containers-automatically/#use-a-process-manager

Docker容器开机自动启动

在使用docker run启动容器时,使用--restart参数来设置:

# docker run -m 512m --memory-swap 1G -it -p 58080:8080 --restart=alway

 --name bvrfis --volumes-from logdata mytomcat:4.0 /root/run.sh   

--restart具体参数值详细信息:

  • no -  容器退出时,不重启容器;
  • on-failure - 只有在非0状态退出时才从新启动容器;
  • always - 无论退出状态是如何,都重启容器;

还可以在使用on - failure策略时,指定Docker将尝试重新启动容器的最大次数。默认情况下,Docker将尝试永远重新启动容器。

# sudo docker run --restart=on-failure:10 redis

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • docker容器启动失败如何查看日志

    docker容器启动失败如何查看日志

    这篇文章主要介绍了docker容器启动失败如何查看日志问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • Docker学习笔记之容器查看启动终止删除的方法

    Docker学习笔记之容器查看启动终止删除的方法

    本篇文章主要Docker学习笔记之容器查看启动终止删除的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • mac下关于docker的安装和配置教程

    mac下关于docker的安装和配置教程

    在Mac上安装Docker的详细步骤包括系统要求、下载安装包、安装DockerDesktop、启动并配置、验证安装、运行HelloWorld容器、管理Docker和卸载Docker
    2024-11-11
  • docker-compose启动docker文件挂载失败的解决

    docker-compose启动docker文件挂载失败的解决

    这篇文章主要介绍了docker-compose启动docker文件挂载失败的解决方案。具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Docker容器的导入导出操作教程

    Docker容器的导入导出操作教程

    这篇文章主要给大家介绍了关于Docker容器的导入导出操作的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Docker具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • 查看docker是否处于启动状态的方法详解

    查看docker是否处于启动状态的方法详解

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,本文主要给大家介绍了查看docker是否处于启动状态的方法,需要的朋友可以参考下
    2024-06-06
  • docker搭建mongodb单节点副本集的实现

    docker搭建mongodb单节点副本集的实现

    本文主要介绍了docker搭建mongodb单节点副本集的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • Docker之Dockerfile使用方法详解

    Docker之Dockerfile使用方法详解

    当使用Docker构建容器化应用程序时,Dockerfile是一个用于定义容器镜像的文本文件,Dockerfile 的编写是构建容器的基础,它允许您定义容器的构建步骤、环境和配置,所以本文就给大家讲讲Docker的Dockerfile使用方法,需要的朋友可以参考下
    2023-09-09
  • ubuntu20.04 LTS安装docker的方法步骤

    ubuntu20.04 LTS安装docker的方法步骤

    这篇文章主要介绍了ubuntu20.04 LTS安装docker的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • Docker 如何安装 Nginx

    Docker 如何安装 Nginx

    这篇文章主要介绍了Docker 如何安装 Nginx,帮助大家更好的使用docker容器,感兴趣的朋友可以了解下。
    2020-09-09

最新评论