docker学习笔记6--创建自动重启容器

无论什么程序都有可能因为某些原因而停止运行,可以通过--restart标志。让Docker重新启动该容器。--restart 标志会检查容器的退出代码,并据此决定是否重启容器。

例如,即使把docker进程重启后,该容器也会对应的重启,没指定该参数的容器则不会重启。

[root@VM-0-16-centos ~]# docker run --restart=always --name daemon_wdf -d  ubuntu  /bin/sh -c "while true;do echo hello world;sleep 1;done"
root@VM-0-16-centos ~]# systemctl restart docker

[root@VM-0-16-centos ~]# docker ps  -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS               NAMES
0c3064d39a44        ubuntu              "/bin/sh -c 'while t…"   About an hour ago   Up 23 seconds                                     daemon_wdf
116db8f4f780        ubuntu              "/bin/sh -c 'while t…"   2 days ago          Exited (137) 24 seconds ago                       daemon_dave

如果--restart 被设置成always ,则无论容器的退出代码是什么,docker都会自动重启容器。另外还可以设为on-failure,这样只有档推出代码为非0才会重启,另外该参数还能设置一个可选的重启次数。

--restart=on-failure:5

上面的例子即为,当退出代码非0,则会尝试重启5次。

引申:

1、Docker容器的重启策略如下:

  • no,默认策略,在容器退出时不重启容器
  • on-failure,在容器非正常退出时(退出状态非0),才会重启容器
  • on-failure:3,在容器非正常退出时重启容器,最多重启3次
  • always,在容器退出时总是重启容器
  • unless-stopped,在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器

2. Docker容器的退出状态码

docker run的退出状态码如下:

  • 0,表示正常退出
  • 非0,表示异常退出(退出状态码采用chroot标准)
  • 125,Docker守护进程本身的错误
  • 126,容器启动后,要执行的默认命令无法调用
  • 127,容器启动后,要执行的默认命令不存在
  • 其他命令状态码,容器启动后正常执行命令,退出命令时该命令的返回状态码作为容器的退出状态码
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值