fbpx
Перейти к содержимому

Автоматический контроль обновлений Docker-контейнеров с Watchtower

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

Установка Watchtower

Для установки Watchtower необходимо выполнить несколько простых шагов:

  1. Установите Docker на вашем сервере. Можно использовать официальную документацию Docker для установки на вашей операционной системе.
  2. Установите Watchtower, запустив следующую команду:
docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower

Эта команда загрузит образ Watchtower из Docker Hub и запустит его в фоновом режиме. Он будет следить за изменениями в вашем реестре Docker Hub и автоматически обновлять ваши контейнеры.

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

После установки Watchtower вы можете использовать его для автоматического обновления ваших контейнеров. Для этого необходимо запустить ваш контейнер с дополнительным тегом «latest». Например, если вы запускаете контейнер Nginx, то команда запуска будет выглядеть следующим образом:

docker run -d --name nginx --restart always -p 80:80 nginx:latest

Watchtower будет следить за тегом «latest» в реестре Docker Hub и обновлять ваш контейнер, если он станет устаревшим.

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

docker run -d --name myapp --restart always myapp:1.0.0

Watchtower будет следить за образом «myapp:1.0.0» в реестре Docker Hub и обновлять ваш контейнер, если он станет устаревшим.

Уведомление от Watchtower в Telegram

Watchtower позволяет отправлять уведомления в мессенджеры при обновлении контейнера. Полный список поддерживаемых мессенджеров доступен на офф сайте. В данной статье мы разберем как настроить уведомление для мессенджера Telegram.

Создание бота в Telegram

Для получения уведомлений в Telegram от Watchtower нам необходимо будет создать бота и получить ChatID канала для отправки уведомлений. Подробная информация о создании бота доступна в подробной инструкции от Telegram.

Получение chat_id для телеграм-канала

Для отправки уведомлений в телеграм-канал необходимо получить chat_id канала. Для этого добавьте бота в ваш телеграм-канал и отправьте в канал любое сообщение. Затем перейдите по ссылке https://api.telegram.org/bot<YourBotToken>/getUpdates, заменив <YourBotToken> на токен вашего бота. Вы получите ответ от Telegram API, содержащий chat_id канала. Скопируйте его.

Настройка Watchtower

Теперь настройте Watchtower на отправку уведомлений в ваш телеграм-канал. Для этого в команду установки Watchtower добавим переменные среды которые отвечают за настройку уведомлений

docker run -d --name watchtower \
  -e WATCHTOWER_LIFECYCLE_HOOKS=1 \
  -e WATCHTOWER_NOTIFICATIONS=shoutrrr \
  -e WATCHTOWER_NOTIFICATION_URL=telegram://<YourBotToken>@telegram/?channels=<YourChatId> \
  -v /var/run/docker.sock:/var/run/docker.sock \
  containrrr/watchtower

Если же вы используете docker-compose то этот же код будет выглядеть следующим образом

version: '3.3'
services:
    watchtower:
        container_name: watchtower
        environment:
	    - WATCHTOWER_LIFECYCLE_HOOKS=1
            - WATCHTOWER_NOTIFICATIONS=shoutrrr
            - WATCHTOWER_NOTIFICATION_URL=telegram://<YourBotToken>@telegram/?channels=<YourChatId>
	command: --interval 30
        volumes:
            - '/var/run/docker.sock:/var/run/docker.sock'
        image: containrrr/watchtower

Замените <YourBotToken> и <YourChatId> на соответствующие значения, которые вы получили в предыдущих шагах.

По умолчанию Watchtower проверяет контейнеры с интервалом в 24 часа, чтобы уменьшить данный интервал до 30 секунд достаточно добавить команду command: —interval 30

Теперь Watchtower будет отправлять уведомления о процессе обновления контейнеров в ваш телеграм-канал. Если все настроено правильно, вы должны увидеть уведомления в канале при обновлении контейнеров.

Пример отправляемого уведомления

Found new portainer/portainer-ce:latest image (f031e549070f)
Found new amir20/dozzle:latest image (9602cf218ba7)
Found new traefik:latest image (d1e26b5f8193)
Stopping /traefik (a262f7327b90) with SIGTERM
Stopping /dozzle (27f1f5fd4110) with SIGTERM
Stopping /portainer (3ddfa13bb8fc) with SIGTERM
Creating /portainer
Creating /dozzle
Creating /traefik

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