Найти в Дзене
Эникей на передержке

Автоматический рестарт проблемных контейнеров | Docker

При работе с контейнерами докер у любого администратора рано или поздно возникает задача настроить их автоматическое восстановление. Несмотря на то, что настройка автохила не имеет большой сложности, при трудоустройстве такой опыт может оказаться хорошим плюсом. Суть решения в следующем: Создайте каталог проекта и композ файл: mkdir /opt/autoheal/ nano /opt/autoheal/docker-compose.yaml Добавьте в файл следующее содержимое: version: '2.4' services: autoheal: image: willfarrell/autoheal:latest container_name: autoheal restart: always environment: AUTOHEAL_CONTAINER_LABEL: all volumes: - /var/run/docker.sock:/var/run/docker.sock *если требуется настроить отслеживание определённых контейнеров, укажите значение переменной AUTOHEAL_CONTAINER_LABEL: autoheal Для запуска контейнера используйте команду: cd /opt/autoheal/ && docker compose up -d Если вам нужно следить за ограниченным количеством контейнеров, добавьте им лейблы в docker-compose.yaml: Чтобы пр
Оглавление

При работе с контейнерами докер у любого администратора рано или поздно возникает задача настроить их автоматическое восстановление. Несмотря на то, что настройка автохила не имеет большой сложности, при трудоустройстве такой опыт может оказаться хорошим плюсом.

Суть решения в следующем:

  1. Настроить healthcheck для контейнеров (не рассматривается в этой статье).
  2. Развернуть контейнер, который будет отслеживать статус указанных (или всех) контейнеров и при возникновении состояния unhealthy перезагружать проблемный контейнер.
  3. Добавить лейбл контейнерам (если требуется отследить ограниченный список контейнеров).

Развёртывание autoheal

Подготовка

Создайте каталог проекта и композ файл:

mkdir /opt/autoheal/
nano /opt/autoheal/docker-compose.yaml

Добавьте в файл следующее содержимое:

version: '2.4'
services:
autoheal:
image: willfarrell/autoheal:latest
container_name: autoheal
restart: always
environment:
AUTOHEAL_CONTAINER_LABEL: all
volumes:
- /var/run/docker.sock:/var/run/docker.sock
Итоговое содержимое файла. Обязательно соблюдайте отступы!
Итоговое содержимое файла. Обязательно соблюдайте отступы!

*если требуется настроить отслеживание определённых контейнеров, укажите значение переменной AUTOHEAL_CONTAINER_LABEL: autoheal

Запуск autoheal

Для запуска контейнера используйте команду:

cd /opt/autoheal/ && docker compose up -d
Запуск контейнера
Запуск контейнера

Добавление лейбла контейнеру

Если вам нужно следить за ограниченным количеством контейнеров, добавьте им лейблы в docker-compose.yaml:

Добавление лейбла autoheal на примере postgres
Добавление лейбла autoheal на примере postgres

Проверка работы

Чтобы протестировать работу автохила, задайте контейнерам заведомо ложный healhcheck и посмотрите на поведение. Проблемный конетйнер будет периодически перезапускаться, а в логах autoheal будут соответствующие отчёты:

Автоматический рестарт nginx
Автоматический рестарт nginx

Заключение

Если статья была полезна, поставьте лайк или подпишитесь на канал, чтобы чаще видеть в ленте подобный контент. Всем добра!)