Docker, лекция 12. Политики перезапуска
Как и любой процесс, контейнеры могут зависать. В этой лекции узнаем как сохранить контейнеры в рабочем состоянии, и автоматически перезапустить их в случае неожиданного сбоя.
Stop On Fail
Docker считает любые контейнеры в exit кодом не равным 0 как crashed. По-умолчанию crashed контейнеры остаются остановленными. Для перезапуска используется:
docker run -d --name restart-default
Не забываем для диагностики смотреть ps и логи:
docker ps -a
docker logs restart-default
Restart On Fail
В зависимости от вашего сценария перезапуск сбойного процесса может исправить проблему. Docker может автоматически повторить попытку запуска контейнера определенное количество раз, прежде чем он прекратит попытки.
Опция —restart=on-failure:# позволяет указать, сколько раз Docker должен повторить попытку. В приведенном ниже примере Docker перезапустит контейнер три раза перед остановкой:
docker run -d --name restart-3 --restart=on-failure:3 scrapbook/docker-restart-example
Always Restart
Наконец, Docker всегда может перезапустить сбойный контейнер, в этом случае Docker будет продолжать попытки, пока контейнер явно не получит команду остановиться.
docker run -d --name restart-always --restart=always scrapbook/docker-restart-example