
На одном из обслуживаемых серверов за время его жизни накопилось 8 разных рабочих Docker-контейнеров — добавлялись по одному, по мере того как разворачивались новые сервисы. Проверили политику перезапуска на каждом и привели все восемь к единому restart: unless-stopped.
Почему это не мелочь
У Docker-контейнера по умолчанию политика перезапуска — no: если процесс внутри падает или хост перезагружается, контейнер просто остаётся лежать, пока кто-то не зайдёт и не поднимет его вручную. На сервере, где сервисы добавлялись со временем разными командами `docker run`, легко получить ситуацию, когда у части контейнеров такая политика вообще не была задана — а значит, любой сбой или плановая перезагрузка сервера превращается в ручную операцию «поднять всё, что упало».
Что сделали
Прошли по всем 8 контейнерам на сервере и явно выставили каждому restart: unless-stopped. Это не то же самое, что always: unless-stopped поднимет контейнер сам после падения или перезагрузки хоста, но не станет мешать, если сервис специально остановили вручную для обслуживания — он и останется остановленным до следующего осознанного запуска. Это золотая середина между «ничего не восстанавливается само» и «перезапустится даже тогда, когда мы сами его выключили».
Итог
Простое по формулировке изменение, которое снимает целый класс потенциальных инцидентов: сервис не поднялся после перезагрузки сервера, о падении узнали не от мониторинга, а от клиента. Теперь весь стек на сервере восстанавливается сам — без ручного вмешательства и без дежурства «на всякий случай».