
Контейнер, который упал, легко обнаружить. Контейнер, который продолжает работать, пока приложение внутри находится в дедлоке — вот который стоит пятницы. Встроенная политика перезапуска Docker плюс проверка здоровья — первая линия защиты, а инструменты вокруг них (мониторы восстановления, обновители образов, панели управления) — причина того, что домашняя лаборатория остается в сети между проверками. Лучшие приложения для политик перезапуска Docker контейнеров — это те, которые делают эту комбинацию скучной, что и является целью.
Мы выбрали восемь инструментов, которые вместе охватывают весь процесс: как объявить политику, как выявить зависший контейнер, как видеть все из браузера и как поддерживать актуальность образов без неожиданностей посередине ночи.
На что обратить внимание в инструменте перезапуска контейнеров
Встроен ли в Docker или добавлен отдельно, полезный инструмент имеет:
- Четкое объявление о том, что означает перезапуск: при сбое, при ненулевом выходе, всегда, если не остановлено. Путаница в этой политике вызвала больше сбоев, чем контейнеры, которые она защищает.
- Проверки здоровья, на которые инструмент может действовать, а не только сообщать. Отчет — это мониторинг. Перезапуск — это исправление.
- Единую панель управления или представление CLI, которое отвечает на вопрос “какие контейнеры работают сегодня”.
- Обработка обновлений, которая является добровольной для каждого контейнера и позволяет зафиксировать те, которые не должны меняться.
- Нулевые сюрпризы при перезагрузке хоста. Файлы Compose и политики перезапуска должны привести к тому же состоянию после цикла питания, что и до.
Восемь инструментов ниже хорошо сочетаются. Выберите те, которые еще нет в вашем стеке.
Быстрое сравнение
| Приложение | Лучше всего для | Форма развертывания | Стоимость |
|---|---|---|---|
| Docker Compose | Объявление политики | CLI + YAML | Бесплатно |
| Willfarrell Autoheal | Перезапуск нездоровых контейнеров | Sidecar контейнер | Бесплатно, open-source |
| Watchtower | Автоматическое обновление образов | Sidecar контейнер | Бесплатно, open-source |
| Portainer | Web панель с элементами управления перезапуском | Web UI контейнер | Бесплатно CE, платный Business |
| Dockge | Compose-ориентированный web интерфейс | Web UI контейнер | Бесплатно, open-source |
| Diun | Уведомления об обновлениях, без автоматического получения | Sidecar контейнер | Бесплатно, open-source |
| Uptime Kuma | Оповещение при исчезновении контейнера | Web UI контейнер | Бесплатно, open-source |
| Ouroboros | Альтернативный автоупдейтер | Sidecar контейнер | Бесплатно, open-source |
1. Docker Compose, лучше всего для объявления политики
Docker Compose — это место, где на самом деле находится политика. restart: unless-stopped в файле docker-compose.yml, плюс блок healthcheck, дает Docker две части, которые ему нужны, чтобы поддерживать сервис в рабочем состоянии. Compose в текущем Docker CLI быстр и стабилен, а репозиторий полный файлов Compose — это единственный источник истины, который читают все остальные инструменты в этом списке.
Где это не срабатывает: Compose не действует при нездоровом состоянии. Контейнер, отмеченный как нездоровый, продолжит работать, если отдельный монитор восстановления не перезапустит его. Это пробел, который заполняет Autoheal.
Цены:
- Бесплатно с Docker Desktop и Docker Engine.
Платформы: Windows, Linux, macOS.
Скачивание: docs.docker.com/compose
Итоговый результат: Базовый слой. Каждая история политики перезапуска в остальной части этого списка предполагает файл Compose под ней.
2. Willfarrell Autoheal, лучше всего для перезапуска нездоровых контейнеров
Autoheal — это однконтейнерный sidecar, который опрашивает собственный Docker Health API и перезапускает любой контейнер, который был отмечен как нездоровый дольше порога. Добровольное участие для каждого контейнера с простой меткой. Установка — это один сервис Compose.
Где это не срабатывает: он реагирует только на сигнал healthcheck самого Docker. Если контейнер никогда не был отмечен как нездоровый, потому что healthcheck приложения неправильный, Autoheal не может помочь.
Цены:
- Бесплатно, open-source.
Платформы: Любой Docker хост (Linux, Windows, macOS).
Скачивание: github.com/willfarrell/docker-autoheal
Итоговый результат: Отсутствующий кусок. Каждая домашняя лаборатория и небольшой производственный стек должны запускать это рядом с Compose.
3. Watchtower, лучше всего для автоматического обновления образов
Watchtower следит за тегом, который вы развернули, и, когда вышестоящий образ переместился, получает новый образ и перезапускает контейнер. Настраивается для каждой метки, поэтому база данных может оставаться зафиксированной, пока статический сайт автоматически обновляется. Уведомления поступают в Slack, Discord или webhook.
Где это не срабатывает: автоматические обновления — палка о двух концах. Зафиксируйте контейнеры, которые имеют значение (базы данных, все, что имеет миграции схемы); позвольте листьям автоматически обновляться.
Цены:
- Бесплатно, open-source.
Платформы: Любой Docker хост.
Скачивание: containrrr.dev/watchtower
Итоговый результат: Автоупдейтер по умолчанию; используйте его с метками, а не в режиме “обновить все”.
4. Portainer, лучше всего для web панели с элементами управления перезапуском
Portainer — это Docker web интерфейс, на который в итоге переходят самостоятельные хостеры. Он перечисляет каждый контейнер, показывает статус здоровья и перезапуска, предоставляет кнопку перезапуска для каждого и поддерживает управление стеком Compose. Community Edition бесплатна и подходит для домашней лаборатории; Business разблокирует доступ на основе ролей и мультикластер.
Где это не срабатывает: это большой интерфейс для однохостного стека. Если ваша установка — это одна машина, Dockge легче.
Цены:
- Бесплатно (Community Edition).
- Business — платная подписка для более крупных развертываний.
Платформы: Любой Docker хост.
Скачивание: portainer.io
Итоговый результат: Лучший выбор для всех, кто запускает несколько хостов или хочет реальную панель управления для гостей.
5. Dockge, лучше всего для просмотра Compose-first
Dockge рассматривает файлы Compose как первоклассные. Он редактирует YAML на месте, перезапускает стек при сохранении и показывает статус контейнера в строке. Если Portainer кажется тяжелым для однохостной установки, Dockge — это то, чем его заменить.
Где это не срабатывает: однозначный фокус; управление несколькими хостами отсутствует. Более новый проект, но стабильный в текущем выпуске.
Цены:
- Бесплатно, open-source.
Платформы: Любой Docker хост.
Скачивание: github.com/louislam/dockge
Итоговый результат: Более легкая панель управления для одномашинной установки с растущим репозиторием Compose.
6. Diun, лучше всего для уведомлений об обновлениях без автоматического получения
Diun (Docker Image Update Notifier) следит за тегами образов и уведомляет, когда появляется новый, без получения или перезапуска. Для контейнеров, которые вы хотите обновить вручную (базы данных, все, что требует ручного шага), Diun говорит вам, когда планировать обновление.
Где это не срабатывает: уведомление по замыслу. Если цель — “просто обновить все за ночь”, используйте Watchtower.
Цены:
- Бесплатно, open-source.
Платформы: Любой Docker хост.
Скачивание: github.com/crazy-max/diun
Итоговый результат: Дополнение к Watchtower. Автоматически обновляйте безопасные вещи, уведомляйте об остальном.
7. Uptime Kuma, лучше всего для оповещения при исчезновении контейнера
Uptime Kuma — это самостоятельно размещенная страница статуса и оповещение. Направьте его на открытый порт каждого контейнера или на сокет Docker, и он проверяет по расписанию. Когда контейнер выпадает из строя, Kuma оповещает через Discord, Telegram, электронную почту или webhook, а страница статуса показывает окно простоя.
Где это не срабатывает: он мониторит, он не перезапускает. Сочетайте с Autoheal для замкнутого цикла.
Цены:
- Бесплатно, open-source.
Платформы: Любой Docker хост.
Скачивание: uptime.kuma.pet
Итоговый результат: Слой оповещения над Autoheal. Вместе они охватывают историю “был вниз, сейчас вверх”.
8. Ouroboros, лучше всего как альтернативный автоупдейтер
Ouroboros — это более старая альтернатива Watchtower. Он делает ту же работу (опрашивает вышестоящий источник, получает, перезапускает) с немного другой поверхностью конфигурации. Оба проекта хорошо поддерживаются; выбирайте, какая документация читается чище.
Где это не срабатывает: сообщество меньше, чем у Watchtower, поэтому устранение неполадок находит меньше тем на форуме.
Цены:
- Бесплатно, open-source.
Платформы: Любой Docker хост.
Скачивание: github.com/pyouroboros/ouroboros
Итоговый результат: Хороший вариант второго выбора автоупдейтера. Большинство стеков сначала приземляются на Watchtower.
Как выбрать правильный
- Начните с Docker Compose и
restart: unless-stoppedдля каждого сервиса. - Добавьте Autoheal для перезапуска, управляемого проверкой здоровья.
- Добавьте Watchtower для автоматического обновления листовых контейнеров и Diun для уведомлений о контейнерах, которые вы отказываетесь автоматически обновлять.
- Добавьте Uptime Kuma для оповещения, поэтому подлинный сбой привлечет ваше внимание.
- Выберите Portainer для мультихостной панели управления или Dockge для однохостного редактора Compose.
- Ouroboros — это альтернатива Watchtower; используйте его, если стиль конфигурации вам нравится.
Часто задаваемые вопросы
В чем разница между политиками перезапуска Docker?
no никогда не перезапускает, on-failure перезапускает при ненулевом выходе, always перезапускает при любой остановке, включая ручную, и unless-stopped перезапускает при сбое и перезагрузке, но не при ручной остановке. unless-stopped — это значение по умолчанию для большинства самостоятельно размещаемых стеков.
Перезапускает ли Docker контейнер, который зависла, но не упал?
Нет. Docker реагирует только на выход контейнера. Для перезапуска зависшего контейнера добавьте проверку здоровья и сочетайте ее с Autoheal или аналогичным монитором восстановления.
Безопасен ли Watchtower для производства?
Для листовых сервисов с неизменяемыми данными — да. Для баз данных и все, что имеет миграции схемы, зафиксируйте образ и обновляйте вручную. Watchtower поддерживает добровольное участие на основе меток.
Portainer или Dockge для домашнего сервера?
Portainer для нескольких хостов или когда вам нужен доступ на основе ролей. Dockge для однохостной системы, где файл Compose является источником истины.
Нужен ли мне отдельный оповещатель, если у меня есть Portainer?
Portainer отображает статус контейнера, но не оповещает вас. Uptime Kuma или другой инструмент уведомления отправляет сообщение при исчезновении контейнера.
Какой минимальный полезный стек?
Compose с restart: unless-stopped и проверкой здоровья, плюс Autoheal. Эта комбинация охватывает 80 процентов сценария “контейнер завис за ночь”.