失败时停止
Docker将容器的非零退出算作容器崩溃。默认情况,容器崩溃后会一直保持停止状态。
我们这里有个特殊的容器,会发送一条消息,然后退出返回1。这就可以模拟一个容器崩溃。
1 | docker run -d --name restart-default scrapbook/docker-restart-example |
如果列出所有的容器,包括停止的,就会看到这个停用的容器。
1 | docker ps -a |
可以看log来定位问题
1 | docker logs restart-default |
失败后重启
根据场景,有可能重启失败的进程就可以解决问题。Docker会自动尝试启动指定次数,直到仍然失败。
命令选项:*–restart=on-failure:#*运行你设置Docker尝试重启的次数。下面的例子,docker会尝试重启3次。
1 | docker run -d --name restart-3 --restart=on-failure:3 scrapbook/docker-restart-example |
可以查看log,确实重启的3次。
1 | docker logs restart-3 |
一直重启
最后,可以设置Docker一直重启容器。这个例子中,Docker会一直重启容器,直到容器明确告知停止。
使用always标识,在容器崩溃后会一直尝试重启。
1 | docker run -d --name restart-always --restart=always scrapbook/docker-restart-example |
查看log会看到不断尝试重启的记录
1 | docker logs restart-always |