问题
系统重启、Docker
重启等都会造成运行的容器停止运行,不得不再把容器启动起来,但这实在是麻烦。实际上,Docker
提供了自动重启的机制。
解决方案
在启动容器时,只要加上参数--restart=always
就可以实现自动重启了,如下:
$ docker run --restart=always
Docker
提供的重启策略不只是always
,有如下:
策略 | 描述 |
---|---|
no | 默认值,不会自动重启。 |
on-failure | 因为错误退出就会重启,错误退出指非0退出码。 |
always | 停止就会重启。如果是手工停止,则在Docker daemon或容器本身重启时启动。 |
unless-stopped | 类似于 always ,除了当容器被停止,它是不会重启的。 |
unless-stopped
用法如下:
$ docker run -d --restart unless-stopped redis
对于已经在运行的容器
对于已经在运行的容器,而启动时又没有增加--restart
参数,则可以通过update
命令来增加:
$ docker update --restart=always xxx
对于on-failure的次数
对于策略on-failure
可以增加次数限制,以防止无限重启:
$ sudo docker run --restart=on-failure:10 redis