Резюме
- Контейнеры Docker не обновляются автоматически.
- Watchtower отслеживает контейнеры Docker, проверяя наличие обновлений по указанному расписанию.
- С помощью Watchtower вы можете автоматически обновлять свой контейнер или просто получать уведомления о доступных обновлениях.
Я люблю Docker, но ненавижу, что контейнеры приходится обновлять вручную. Поэтому я нашел решение: Watchtower. Этот простой контейнер Docker полностью упростил мою настройку, и я не буду развертывать еще один сервер Docker без него.
Контейнеры Docker не обновляются сами по себе
Мне нравится все в контейнерах Docker, за исключением того, что в большинстве менеджеров Docker нет простого метода обновления. Хотя Unraid предоставляет отличную систему обновления Docker, обычно приходится пересоздавать контейнер, чтобы обновить его, даже с помощью чего-то вроде Portainer.
Никакие данные не теряются во время этого воссоздания, и это, честно говоря, простая вещь. Однако, знание того, есть ли у контейнера обновление, плюс обновление множества контейнеров одновременно, может быть немного обременительным.
Честно говоря, я был немного удивлен этим. До последнего месяца или около того я всегда использовал Unraid для управления своими контейнерами Docker. У Unraid отличный интерфейс для того, чтобы узнать, есть ли у контейнера обновление, и применить это обновление. Фактически, в Unraid вы можете нажать на отдельные контейнеры, чтобы обновить их, или нажать кнопку и обновить их все одновременно.
Но, перейдя на Portainer, я понял, что это функция Unraid, а не то, что делает сам Docker. В тот момент я решил, что мне нужно найти лучший способ обновления моих контейнеров Docker. Такой, который был бы более автоматизированным и не требующим вмешательства, чем ручное пересоздание каждого контейнера.
Watchtower следит за обновлениями Docker
Когда я отправился на поиски автоматизированной системы обновления для Docker, Watchtower был первым программным обеспечением, которое я встретил. На нем же и остановился поиск, потому что он делает все, что мне нужно, и даже больше.
Watchtower — это контейнер Docker, который работает в вашей настройке Docker. Подключившись к сокету Docker, он может видеть, какие у вас есть контейнеры, и знает, что делать дальше. Развертывание Watchtower чрезвычайно просто.
Без дополнительных аргументов контейнер Watchtower запустится один раз и остановится. Однако есть много переменных окружения, которые можно задать. Одна из основных переменных, которую я использую, — WATCHTOWER_DISABLE_CONTAINERS, в которую вы передаете имя контейнера в качестве переменной. По сути, это говорит Watchtower игнорировать эти контейнеры.
Если у вас есть критически важные контейнеры, которые вы не хотите автоматически обновлять и которые могут выйти из строя, вам следует убедиться, что они включены в переменную WATCHTOWER_DISABLE_CONTAINERS.
У меня также есть переменные окружения WATCHTOWER_SCHEDULE и TZ, настроенные на обработку планирования при запуске Watchtower. Он использует планирование Chron, и мой настроен на запуск рано утром ежедневно, когда обычно никто не использует какие-либо службы или веб-сайты, которые я размещаю в своей настройке Docker. Однако вы можете настроить его на проверку один раз в день, несколько раз в день, раз в неделю, раз в месяц. Это действительно зависит от вас.
Автоматическое обновление или просто уведомление — выбор за вами
Watchtower вполне настраиваема. Вы можете не только указать, когда ей запускаться и какие контейнеры игнорировать, но и определить, обновлять ли ей эти контейнеры или нет.
Watchtower может интегрироваться с Discord и Slack, позволяя вам настраивать уведомления о том, что он делает. Это значит, что вы можете просто сказать ему, когда контейнер обновляется, но ничего с ним не делать. С другой стороны, вы можете сделать так, чтобы он делал полное обновление контейнеров и сообщал вам, когда оно будет завершено. Или, как я, просто обновлять его, но никогда не знать, что происходит, пока вы не проверите логи.
Так что, стоит ли устанавливать его на автоматическое обновление или просто уведомлять? Ну, у меня большинство контейнеров обновляются автоматически: те, которые я не предвижу поломки, и которые мне относительно легко исправить, если они это сделают. Другие сервисы могут катастрофически сломаться при автоматическом обновлении.
Вам нужно определить, какой уровень автоматизации вы хотите здесь использовать. Однако самое замечательное в Watchtower — это его ультранастраиваемость, поэтому вы можете решать в каждом конкретном случае, будет ли контейнер обрабатываться автоматически.
Watchtower позволяет вам выбирать, с какими контейнерами он работает, через переменную WATCHTOWER_DISABLE_CONTAINERS или через метки. С помощью меток вы можете передать переменную самому контейнеру, включив или отключив его для Watchtower. Хотя я еще не использовал эту функцию Watchtower, здорово видеть, что вы можете устанавливать флаги в других ваших контейнерах вместо того, чтобы устанавливать их в Watchtower. Затем вы можете просто изменить этот флаг в будущем, если захотите изменить функцию Watchtower.