TGViewer
Записки IT специалиста Записки IT специалиста @interface31 · 8.99K subscribers
Post #6173 2.37K
Watchtower – управляем обновлением контейнеров в Docker

Инфраструктура на основе Docker – это удобно, особенно если вы используете подход «инфраструктура как код». Но вместе с плюсами появляются и минусы – все это хозяйство требуется поддерживать в актуальном состоянии и регулярно обновлять.

Можно, конечно, делать это руками, но зачем, когда можно автоматизировать этот процесс. Для этого мы будем использовать Watchtower – простой и удобный инструмент, который будет отслеживать состояние ваших контейнеров и обновлять их по мере выхода новых версий.

Для его использования вам потребуется еще один небольшой контейнер, который можно развернуть при помощи следующего docker-compose.yml:

services:
watchtower:
image: nickfedor/watchtower:latest
container_name: watchtower
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- WATCHTOWER_CLEANUP=true
- WATCHTOWER_REMOVE_VOLUMES=true
- WATCHTOWER_POLL_INTERVAL=86400
- DOCKER_API_VERSION=1.40
- WATCHTOWER_LABEL_ENABLE=true
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"


Коротко пробежимся по некоторым опциям:

🔹 WATCHTOWER_CLEANUP - удаляет старые образы после обновления

🔹 WATCHTOWER_REMOVE_VOLUMES - удаляет старые анонимные тома

🔹 WATCHTOWER_POLL_INTERVAL - интервал проверки обновлений, в нашем случае - сутки

Перед включением этих опций, особенно второй, убедитесь, что вы понимаете что делаете.

Но обновлять все подряд без разбора – плохая идея. Поэтому мы рекомендуем в продуктивных средах использовать включенным параметр:

🔹 WATCHTOWER_LABEL_ENABLE – включает режим обновления по меткам

Теперь для того, чтобы Watchtower отслеживал и обновлял контейнер к нему следует добавить метку:

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


Таким образом мы можем четко контролировать что именно мы обновляем, особенно если у нас есть какие-либо критичные сервисы, которые лучше протестировать перед обновлением.

Кстати, для них есть другая полезная метка:

labels:
- "com.centurylinklabs.watchtower.enable=false"


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

WATCHTOWER_LABEL_ENABLE=false


В этом случае автоматически обновляются все контейнеры, кроме имеющих метку enable=false, что служит надежным предохранителем от нештатной ситуации.
  • 👍 17
  • ❤ 1
  • 😁 1
More from @interface31
  1. Sep 27, 2026Ой, а что это случилось? Куда делась лицензия? Программные лицензии 1С - полное дно!!! На…
  2. Sep 27, 2026☝️ Не все умеют правильно пользоваться командами su и sudo. Команда su производит замену п…
  3. Sep 27, 2026Post #6797
  4. Sep 26, 2026Популярные мифы про Docker Встречался третьего дня с одним коллегой, у того серьезная голо…
  5. Sep 26, 2026Про РКН и MikroTik Новость эту не обсуждает только ленивый. Причем, как водится, многие пе…
  6. Sep 26, 2026Post #6794
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →