1. Docker容器的重启策略

Docker容器的重启策略是面向生产环境的一个启动策略,在开发过程中可以忽略该策略。

Docker容器的重启都是由Docker守护进程完成的,因此与守护进程息息相关。

Docker容器的重启策略如下:

    • no,默认策略,在容器退出时不重启容器

    • on-failure,在容器非正常退出时(退出状态非0),才会重启容器

      • on-failure:3,在容器非正常退出时重启容器,最多重启3次

    • always,在容器退出时总是重启容器

    • unless-stopped,在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器

例如:

docker run -p 8092:80 --name apicloud -v /home/lifehaier:/var/www/html -d --restart=on-failure:3 hub.docker.terminus.io:5000/aabb:20180315

解释:使用docker run命令运行一个容器,该容器内部监听80端口,与宿主机系统8092端口映射,命名该容器名称为apicloud,宿主机系统目录/home/lifehaier与容器内部/var/www/html路径映射,如果容器对应的images路径/var/www/html下面有数据的话,则被宿主机/home/lifehaier路径下面的数据覆盖,-d参数是让容器后台运行,--restart=on-failure:3是指容器在未来出现异常退出(退出码非0)的情况下循环重启3次;hub.docker.terminus.io:5000/aabb:20180315 是images名称,容器基于此images进行启动。

2. Docker容器的退出状态码

docker run的退出状态码如下:

    • 0,表示正常退出

    • 非0,表示异常退出(退出状态码采用chroot标准)

      • 125,Docker守护进程本身的错误

      • 126,容器启动后,要执行的默认命令无法调用

      • 127,容器启动后,要执行的默认命令不存在

      • 其他命令状态码,容器启动后正常执行命令,退出命令时该命令的返回状态码作为容器的退出状态码

3. docker run的--restart选项

通过--restart选项,可以设置容器的重启策略,以决定在容器退出时Docker守护进程是否重启刚刚退出的容器。

--restart选项通常只用于detached模式的容器。

--restart选项不能与--rm选项同时使用。显然,--restart选项适用于detached模式的容器,而--rm选项适用于foreground模式的容器。

在docker ps查看容器时,对于使用了--restart选项的容器,其可能的状态只有Up或Restarting两种状态。

4. 示例与补充

 示例:

docker run -d --restart=always bba-208
docker run -d --restart=on-failure:10 bba-208

补充:

#查看容器重启次数
docker inspect -f "{{ .RestartCount }}" bba-208
#查看容器最后一次的启动时间
docker inspect -f "{{ .State.StartedAt }}" bba-208

参考链接:

https://docs.docker.com/engine/reference/run/

https://blog.csdn.net/taiyangdao/article/details/73076019

转自:http://blog.51cto.com/nanfeibobo/2091896

(转)Docker容器的重启策略及docker run的--restart选项详解的更多相关文章

  1. Docker容器的重启策略及docker run的--restart选项详解

    https://blog.csdn.net/taiyangdao/article/details/73076019 1. Docker容器的重启策略 Docker容器的重启策略是面向生产环境的一个启动 ...

  2. (转)docker run的--rm选项详解

    转:https://blog.csdn.net/taiyangdao/article/details/73076770 在Docker容器退出时,默认容器内部的文件系统仍然被保留,以方便调试并保留用户 ...

  3. Tomcat Docker容器自动重启问题排查

    1. 问题 前两天发现 APP 刷新数据偶尔出现等半天没有响应的情况,感觉不像 APP 的问题,就查了下服务端的日志. 服务端用的是 Java,部署采用的 Docker 官方的 tomcat 镜像,并 ...

  4. Docker容器优雅重启

    默认情况下,当 Docker 守护进程终止时,它将关闭正在运行的容器.您可以配置守护程序,以便容器在守护程序不可用时保持运行.此功能称为live-restore.live-restore选项有助于减少 ...

  5. Docker容器(六)——创建docker私有化仓库

    docker私有化仓库是为了节约带宽(外网速度慢或者干脆不能连外网),以及自己定制系统. (1).环境 youxi1 192.168.5.101 docker私有化仓库 youxi2 192.168. ...

  6. 解决docker容器中文乱码,修改docker容器编码格式

    前台上传文件到服务器后,服务器返回给前台的文件列表中出现中文乱码,所有的中文文件名全部变成?,英文文件名则正常显示. 问题经过定位,发现后台代码的multipartfile类在执行transterto ...

  7. 【原创】深入理解Docker容器和镜像 -- 分析了docker的命令含义

    10张图带你深入理解Docker容器和镜像 镜像(Image)就是一堆只读层(read-only layer)的统一视角 要点:容器 = 镜像 + 读写层.并且容器的定义并没有提及是否要运行容器. 一 ...

  8. docker 容器大小查看及清理docker磁盘空间

    本文为博主原创,转载请注明出处: 今天打开服务器下载文件时,发现服务器内存不足,并开始清理服务器内存,排查及清理方法如下: 1. 查看服务器内存大小: df -h            通过 df - ...

  9. Docker技术入门与实战 第二版-学习笔记-3-Dockerfile 指令详解

    前面已经讲解了FROM.RUN指令,还提及了COPY.ADD,接下来学习其他的指令 5.Dockerfile 指令详解 1> COPY 复制文件 格式: COPY  <源路径> .. ...

随机推荐

  1. Linux下C语言执行shell命令

    有时候在代码中需要使用到shell命令的情况,下面就介绍一下怎么在C语言中调用shell命令: 这里使用popen来实现,关于popen的介绍,查看 http://man7.org/linux/man ...

  2. Spring-Cloud-Gateway 从升级到放弃

    1 为什么要升级为spring-cloud-gateway? Spring Cloud Gateway features: Built on Spring Framework 5, Project R ...

  3. jenkins GitHub 自动触发

    jenkins GitHub 自动触发 转载请注明出处: 转载自Bin's Blog:  jenkins GitHub 自动触发( http://www.wenbin.cf/post/54/ ) 需要 ...

  4. oozie调度sqoop Job 数据库密码无法保存

    问题描述 通过oozie调度sqoop作业时,需要输入数据库作业密码,但在sqoop元数据服务配置密码后,过一段时间会失效. 解决方法 将数据库密码写入HDFS文件,通过配置Sqoop job,实现传 ...

  5. 消息中间件系列四:RabbitMQ与Spring集成

    一.RabbitMQ与Spring集成  准备工作: 分别新建名为RabbitMQSpringProducer和RabbitMQSpringConsumer的maven web工程 在pom.xml文 ...

  6. 关于FastJSON

    https://github.com/alibaba/fastjson/wiki/Quick-Start-CN FastJSON常见问题 FastJson和get方法的问题 使用SimplePrope ...

  7. netty 粘包的解决策略

    粘包问题的解决策略      由于底层的 TCP 无法理解上层业务数据,所以在底层是无法保证数据包不被拆分和重组的 , 这个问题只能通过上层的应用协议栈设计来解决,根据业界主流的协议的解决方案, 可以 ...

  8. [3]java1.8线程池—ThreadPoolExecutor

    Wiki 上是这样解释的:Thread Pool 作用:利用线程池可以大大减少在创建和销毁线程上所花的时间以及系统资源的开销! 下面主要讲下线程池中最重要的一个类 ThreadPoolExecutor ...

  9. 【物联网】 9个顶级开发IoT项目的开源物联网平台(转)

    物联网(IoT)是帮助人工智能(AI)以更好的方式控制和理解事物的未来技术. 我们收集了一些最有名的物联网平台,帮助您以受控方式开发物联网项目. 物联网平台是帮助设置和管理互联网连接设备的组件套件. ...

  10. Wireshark抓包分析TCP建立/释放链接的过程以及状态变迁分析

    Wireshark抓包分析TCP建立/释放链接的过程以及状态变迁分析 一.介绍计算机网络体系结构 1.计算机的网络体系结构 在抓包分析TCP建立链接之前首先了解下计算机的网络通信的模型,我相信学习过计 ...