При развертывании приложений на серверах обычно существует разделение между тем, что приложение связывает с собой, и тем, что оно ожидает от платформы (операционная система и установленные пакеты). Одним из моментов этого является то, что платформа может быть обновлена независимо от приложения. Это полезно, например, когда необходимо срочно применить обновления безопасности к пакетам, предоставляемым платформой, без перестройки всего приложения.
Традиционно обновления безопасности применялись просто путем выполнения команды менеджера пакетов для установки обновленных версий пакетов в операционной системе (например, «yum update» в RHEL). Но с появлением контейнерной технологии, такой как Docker, в которой образы контейнеров по существу объединяют и приложение, и платформу, каков канонический способ поддержания системы с контейнерами в актуальном состоянии? И хост, и контейнеры имеют свои собственные, независимые наборы пакетов, которые требуют обновления и обновления на хосте, не будет обновлять какие-либо пакеты внутри контейнеров. С выпуском RHEL 7, в котором контейнеры Docker особенно представлены, было бы интересно услышать, как Redhat рекомендует способ обработки обновлений безопасности контейнеров.
Мысли о нескольких вариантах:
- Разрешение менеджеру пакетов обновлять пакеты на хосте не будет обновлять пакеты внутри контейнеров.
- Необходимость регенерации всех образов контейнеров для применения обновлений, по-видимому, нарушает разделение между приложением и платформой (обновление платформы требует доступа к процессу сборки приложения, который генерирует образы Docker).
- Выполнение ручных команд внутри каждого из запущенных контейнеров кажется громоздким, и изменения могут быть перезаписаны при следующем обновлении контейнеров из артефактов выпуска приложения.
Так что ни один из этих подходов не кажется удовлетворительным.
docker pull debian/jessie
обновить изображение, а затем восстановить свой существующий образ (ы), а затем остановить контейнеры и запустить их снова ( с новым изображением). Изображения, которые я создаю, имеют то же имя, что и предыдущие, поэтому запуск выполняется через скрипт. Затем я удаляю «безымянные» изображения. Я, безусловно, был бы признателен за лучший рабочий процесс.