Разница между restart: unless-stopped
и restart: always
Долгое время я наивно полагал, что разница между unless-stopped и always в том, что unless-stopped остановится, если дать docker stop <container>
, а always нет. Это не так. Все контейнеры, от мала до велика, останавливаются, если в них кинуть stop.
Нюанс в том, что если что-то внешнее убьёт или повредит сервис Докера, то после восстановления работоспособности always стартанёт, а unless-stopped не стартанёт. Однако, оба случая перезагрузят контейнер, если внутри случится ошибка и он вылетит. Поэтому, если вам нужны контейнеры, которые будут стартовать вместе с системой и после перезагрузок системы, то вам нужен always
.
@kantor
Там немного не в этом суть.
docker stop остановит и то, и другое.
Но если ты сделал docker stop, то always на следующем ребуте запустится, а unless-stopped нет.
То есть в целом unless-stopped можно использовать и с ребутами. Он в меньшем количестве ситуаций перезапустит контейнер, но зато он и запомнит если тебе его нужно руками погасить и оставить так даже после ребута.