логотип PurpleSchool
логотип PurpleSchool

Использование Watchtower в Docker

Автор

Олег Марков

Введение

Docker стал неотъемлемой частью современной разработки программного обеспечения, предлагая эффективный способ переноса приложений и их зависимости в контейнеры. Однако, как и любое другое программное обеспечение, Docker-контейнеры требуют регулярного обновления для получения последних улучшений безопасности и функциональности. В этой статье я расскажу об инструменте, который значительно упростит этот процесс — Watchtower.

Watchtower — это удобный инструмент для автоматического мониторинга и обновления Docker-контейнеров. С его помощью вы сможете поддерживать свои контейнеры в актуальном состоянии, не тратя время на ручные обновления.

Установка и запуск Watchtower

Чтобы начать использование Watchtower, сначала необходимо установить его в систему, где уже развернут Docker. Установка Watchtower проста и осуществляется через запуск контейнера.

Установка Watchtower

Для установки Watchtower выполните следующую команду:

docker run -d \
  --name watchtower \
  -v /var/run/docker.sock:/var/run/docker.sock \
  containrrr/watchtower
  • docker run -d исполняет контейнер в режиме демона (фоновой работы).
  • --name watchtower даёт имя контейнеру.
  • -v /var/run/docker.sock:/var/run/docker.sock связывает Docker-сокет с контейнером, позволяя Watchtower взаимодействовать с системой Docker и ее контейнерами.

Как только вы выполните эту команду, Watchtower начнет отслеживать все запущенные контейнеры и автоматически обновлять их при наличии новых версий образов.

Возможности Watchtower

Теперь давайте рассмотрим, какие возможности предлагает Watchtower и как их можно использовать для более точной настройки процесса обновления контейнеров.

Автоматическое обновление

Watchtower автоматически мониторит Docker-хост и проверяет наличие обновленных образов для запущенных контейнеров. Это позволяет минимизировать ручной труд и уменьшить шансы эксплуатации устаревших и уязвимых образов.

Конфигурация через переменные окружения

Watchtower поддерживает гибкую настройку с помощью переменных окружения. Это даёт возможность точнее управлять его работой. Вот несколько примеров:

Указание интервала проверки обновлений

По умолчанию Watchtower проверяет обновления каждые 24 часа. Если вы хотите изменить этот интервал, вы можете установить переменную окружения WATCHTOWER_POLL_INTERVAL:

docker run -d \
  --name watchtower \
  -e WATCHTOWER_POLL_INTERVAL=3600 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  containrrr/watchtower

Здесь интервал проверки составляет 3600 секунд, что соответствует 1 часу.

Обновление только определённых контейнеров

Вы также можете настроить Watchtower на обновление только определённых контейнеров, используя переменную окружения WATCHTOWER_LABEL_ENABLE. Например, добавив в свои Docker-контейнеры следующую метку:

labels:
  - com.centurylinklabs.watchtower.enable=true

Затем используем следующий запуск Watchtower:

docker run -d \
  --name watchtower \
  -e WATCHTOWER_LABEL_ENABLE=true \
  -v /var/run/docker.sock:/var/run/docker.sock \
  containrrr/watchtower

В этом примере Watchtower будет обновлять только те контейнеры, для которых установлена данная метка.

Уведомления

Watchtower может уведомлять вас о процессе обновления контейнеров через различные каналы, такие как электронная почта, Slack и другие. Чтобы настроить уведомления, вам нужно добавить соответствующие переменные окружения. Например, для Slack это будет выглядеть так:

docker run -d \
  --name watchtower \
  -e WATCHTOWER_NOTIF_SLACK_HOOK_URL=https://hooks.slack.com/services/YOUR/SLACK/HOOK \
  -e WATCHTOWER_NOTIF_SLACK_IDENTIFIER="Watchtower" \
  -v /var/run/docker.sock:/var/run/docker.sock \
  containrrr/watchtower

Вы должны заменить YOUR/SLACK/HOOK на свой собственный WebHook URL.

Заключение

Watchtower — это мощный инструмент, который может значительно упростить работу разработчиков и администраторов Docker. Он обеспечивает автоматическое обновление контейнеров, предлагая возможность гибкой настройки и интеграции с системами уведомлений. Это делает поддержание контейнеров в актуальном состоянии более простым и надежным процессом. Вы сможете сосредоточиться на более важных задачах, зная, что ваши контейнеры всегда будут обновлены и защищены от уязвимостей.

Карта развития разработчика

Получите полную карту развития разработчика по всем направлениям: frontend, backend, devops, mobile