Рубрики
Uncategorized

Автоматизация обновлений базового изображения Docker Container с сторожей

Подавляющее большинство DockerFiles начинается с родительского изображения (базовое изображение), которые являются частью наших контейнеров докеров, основание из того, где построены наши проекты. Эти базовые изображения (нормально) часто обновляются, и нам нужно следовать обновлениям, чтобы не сохранить наш проект устаревшим. Сторожевая башня поможет нам с этими частыми обновлениями, плавно управляя их для наших проектов. Помечено с Docker, DevOps, учебником, автоматизацией.

В случае, если вы используете Docker для ваших событий, проектов, приложений … Обычно вы используете базовые изображения для начала. Эти базовые изображения (обычно) часто обновляются, и в некоторых случаях мы собираемся быть в курсе тега базового изображения. В этих случаях Сторожевая башня Это отличный инструмент DEVOPS, который собирается управлять этим случаями для нас с очень небольшим количеством хлопот.

Например, давайте предположим, что имея очень простой проект Python, контейнерным с официальным Python 3 Базовое изображение .Наш Docker File ссылается на базовое изображение с 3 ярлык:

FROM python:3

ADD my_awesome_script.py /

RUN pip install numpy

CMD ["python", "./my_awesome_script.py"]

Если мы создадим изображение и развертываем контейнер, он собирается сохранить новейший базовый образ Python 3 в момент создания его, но мы хотим, чтобы это базовое изображение было в курсе, чтобы извлечь выгоду из всех изменений, и улучшения, сделанные в Разные версии Python 3.

В этих случаях сторожевая башня поможет нам!

С Стоять на стороне Мы можем автоматически обновить бегущую версию наших контейнерных приложений. В случае использования наших собственных базовых изображений, простым нажатием нового изображения на Docker Hub или наш собственный реестр изображений.

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

Это может быть достигнуто так же просто, как выполнение следующей команды в том же машине наш контейнер развернут:

docker run -d \
    --name watchtower \
    -v /var/run/docker.sock:/var/run/docker.sock \
    containrrr/watchtower

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

В предыдущем примере Python WatchSithowower вытащит последний базовый образ Python каждые несколько минут и сравнивает его с тем, который используется для запуска контейнера. Если изменение его обнаружено, он остановится/удаляет контейнер и перезапустите его с одинаковыми опциями.

Примечание : Поскольку код WatchSatower необходимо взаимодействовать с API Docker, чтобы контролировать беговые контейнеры, нам нужно установить /var/run/docker.sock с Флаг при запуске.

Функции

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

Давайте посмотрим на них.

Настройка исполнения сторожевой башни

Есть много аргументов Мы можем использовать для настроить поведение сторожевой башни. Некоторые из самых интересных:

  • - ОЧАС : Удалите старые изображения после обновления.
  • - Гость : Сокет Docker Daemon для подключения к.
  • - Он прекратил Также будет обновляться созданные и выходы контейнеров.
  • - Остановлен : С - Он прекратил Аргумент, он начнет контейнеры после обновления их.
  • - ИНТЕРВАЛ : интервал опроса за считанные секунды.
  • --label-enable : только обновлять контейнеры с этикеткой com.centuryneklabs.watchtower.enable установить правду.
  • - Только - только : Только монитор, не обновляет.
  • --no-Restart : Полезно, если использование внешней системы управляет контейнерами.
  • - Однажды : Запустите попытку обновления один раз, а затем выйти.
  • - Шудула : Позволяет указывать Выражение крина которые устанавливаются, когда проверять наличие обновлений.

Выбор контейнера

Как мы уже видели, Wide Watchower посмотрит все контейнеры и попытайтесь их обновить. Однако в большинстве случаев нам нужно указать, какие контейнеры должны быть обновлены.

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

docker run -d \
    --name watchtower \
    -v /var/run/docker.sock:/var/run/docker.sock \
    containrrr/watchtower mycontainer myothercontainer

Но рекомендуемый способ установить метку com.centuryneklabs.watchtower.enable Наши истинные или ложные в наших контейнерах в зависимости от того, что мы хотим, чтобы Сторожевую систему обновить их или нет. Это может быть достигнуто вставкой метки в DockerFile или при запуске контейнера с --label флаг.

Примечание : Упомянутая метка со значением TRUE необходимо только если мы начнем Windowstower с --label-enable флаг. Это будет обновлять контейнеры только с этим флагом, установленным как True, в противном случае он не нужен, поскольку он по умолчанию смотрит все контейнеры (у которых нет метки, установленной как false). Полезно обратить вспять поведение по умолчанию для сторожевой башни.

Уверенность

Сторожевая башня может отправлять уведомления, когда контейнеры обновляются. Типы уведомлений для отправки установлены путем передачи списка значений Comma Comma для - Процитификация вариант или WatchSower_Notifications Переменная среды, которая имеет следующие допустимые значения: Email , расслабиться , MS Teams и Petify Отказ

Мы также можем указать уровень журнала для уведомлений, используя - Низкий уровень вариант или Watchtower_notifications_level Переменная среды, со следующими значениями: паника , Fatal , Ошибка , предупреждать , Информация , Отладка Отказ

Чтобы настроить уведомления для различных сервисов, посмотрите на Официальное руководство , что все покрыто детально.

Использование частных реестров Docker

В случае использования частных реестров Docker нам необходимо снабдить Vighttower The Comparts Authential Actions для реестра с переменными среды Repo_user. и Repo_pass. . Другой способ сделать это — это установить файл конфигурации Docker Host в контейнер (в корне файловой системы / ).

Пример:

docker run -d \
  --name watchtower \
  -e REPO_USER=username \
  -e REPO_PASS=password \
  -v /var/run/docker.sock:/var/run/docker.sock \
  containrrr/watchtower container_to_watch --debug

Больше возможностей!

Есть и другие функции (такие как связанные контейнеры, удаленные хосты, безопасные соединения …), не покрытые в этом сообщении, которые могут быть полезны в некоторых случаях, пожалуйста, посмотрите на Страница проекта сторожевой башни чтобы увидеть их все подробно.

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

Я также видел этот инструмент, используемый в личных средах, таких как Малина Те, с контейнерами Docker, где в этом случае используются для развлекательных целей (например, Plex ) И это тоже очень полезно!

Лично я использую этот инструмент, и я очень доволен результатами. А вы? Попробуй!

Счастливые развертывания! 🎉🎉.

Оригинал: «https://dev.to/piraces/automating-docker-container-base-image-updates-with-watchtower-1io3»