Під час розгортання програм на серверах зазвичай існує розмежування між тим, що додаток входить у себе, і тим, що він очікує від платформи (операційної системи та встановлених пакетів). Одним із пунктів цього є те, що платформу можна оновлювати незалежно від програми. Це корисно, наприклад, коли оновлення безпеки потрібно терміново застосовувати до пакетів, наданих платформою, не переробляючи весь додаток.
Традиційно оновлення безпеки застосовуються просто шляхом виконання команди менеджера пакунків для встановлення оновлених версій пакетів в операційній системі (наприклад, "yum update" на RHEL). Але з появою технології контейнерів, таких як Docker, де зображення контейнерів по суті поєднують як додаток, так і платформу, який канонічний спосіб оновлювати систему з контейнерами? І хост, і контейнери мають власні, незалежні, набори пакунків, які потребують оновлення та оновлення на хості, не оновлюватимуть жодних пакетів усередині контейнерів. З виходом RHEL 7, де особливо представлені контейнери Docker, було б цікаво почути, що рекомендується Redhat для обробки оновлень безпеки контейнерів.
Думки про кілька варіантів:
- Якщо дозволити менеджеру пакетів оновити пакети на хості, вони не будуть оновлювати пакети всередині контейнерів.
- Регенерування всіх зображень контейнерів для застосування оновлень, здається, порушує поділ між додатком та платформою (оновлення платформи вимагає доступу до процесу збирання додатків, який генерує зображення Docker).
- Запуск вручну команд усередині кожного із запущених контейнерів здається громіздким, і зміни ризикують бути перезаписаними наступного разу, коли контейнери будуть оновлені з артефактів випуску програми.
Тож жоден із цих підходів не здається задовільним.
docker pull debian/jessie
оновити зображення, потім відновити існуючі зображення, потім зупинити контейнери та запустити їх знову ( з новим образом). Образи, які я будую, мають те саме ім’я, що і попередні, тому запуск виконується за допомогою сценарію. Потім я видаляю "безіменні" зображення. Я б точно вдячний за кращий робочий процес.