Незважаючи на те, що Docker та упаковочні системи Debian по- справжньому вирішують дві дуже різні проблеми :
Система упаковки Debian створена для встановлення програмного забезпечення на хості та оновлення його максимально просто. Він здатний обробляти складні схеми залежності та обмежень між компонентами програмного забезпечення, наприклад, "програмне забезпечення X версії A вимагає програмного забезпечення Y з версією B або встановленої новішої версії" або "програмне забезпечення X ніколи не повинно встановлюватися з програмним забезпеченням версії Z".
Система Docker розроблена для легкого опису та розгортання сервісів, особливо мікро-сервісів, можливо, на кількох хостах - наприклад, рой Докер або кластер Kubernetes.
Ці дві проблеми по суті є ортогональними, а це означає, що, враховуючи проблему розгортання, можна вирішити одну з них, обидві, або, можливо, жодну з них, як частину рішення. При використанні обох пакетів Debian використовується при створенні зображення Docker, а ваш Dockerfile (рецепти, які використовуються для підготовки зображення Docker, що описує «віртуалізовану систему», що працює в контейнері) по суті реєстрував би ваше сховище Debian у джерела системи упаковки Debian та встановити ваш пакет.
Зважаючи на це, мені здається, що ви дійсно шукаєте - це реалізувати незмінний шаблон сервера. Нещодавній розвиток хмарних технологій дозволив оновити програмне забезпечення не за допомогою класичної системи оновлення програмного забезпечення із системи програмного пакету (наприклад, системи упаковки Debian), а просто просто замінивши повний сервер відразу. (Деякі люди робили це до цієї розробки, маючи три ОС на сервері, два використовували по черзі для запуску пристрою та міні-ОС, призначені для заміни пристрою. Хоча це не надто складно, це, здається, завжди залишалося ніша.) Ця методика може зацікавити вас, тому що якщо ви використовуєте для оновлення програмного забезпечення на своєму сервері за допомогою менеджера пакунків, остаточний стан сервера залежить від "історії оновлення" сервера - особливо якщо помилки трапляються в процес оновлення. Ця неоднорідність погана,
У нас тисячі цих ящиків на полі. Ми управляємо залежностями пакунків, реєстрацією процесів тощо за допомогою дебютного пакету з різним ступенем успіху.
може стосуватися цього. Незмінна модель сервера стирає це джерело помилок, по суті знищуючи поняття "історія оновлення" від проблеми.
Зараз існують різні варіанти впровадження незмінного шаблону сервера, два популярні варіанти - використовувати зображення Докера, зображення або використовувати "зображення головного екземпляра" від вашого постачальника хмар (вони називаються AMI в AWS і просто власні зображення в Google Compute Engine) . Ваш випадок використання забороняє використання хмарних методів, тому я вважаю зображення Докера єдиним прийнятним вибором. (Для завершення, безумовно, можна використовувати інші підходи, наприклад, використовуючи Virtual Box або подібне рішення для віртуалізації, як альтернативу Docker.)
Використовуючи техніку шаблону незмінного сервера, ви вводите новий артефакт (зображення Докера), що представляє ваш сервер, і цей артефакт також можна перевірити, і дуже легко отримати налаштування, що правдиво повторює ваші виробничі налаштування, окрім завантаження служби.
Тепер, щоб розглянути конкретну проблему, яку ви описали, припустимо, що реалізація незмінного шаблону сервера за допомогою Docker - це насправді те, що ви хочете. Оскільки система Docker і система упаковки Debian є взаємодоповнюючими, а не взаємовиключними (див. Вступ), ми все ще повинні вирішити питання, чи варто ви підготувати пакет Debian для свого програмного забезпечення.
Доречність використання пакету Debian для встановлення вашого програмного забезпечення (у зображенні Docker або на хості) полягає у складності проблеми з версією, яку ви повинні вирішити. Якщо ви одночасно запускаєте декілька версій свого програмного забезпечення, періодично потрібно знизити їх кількість і мати складні вимоги до версії, які потрібно ретельно документувати, тому що пакет Debian є обов'язковим обов’язком. В іншому випадку цей крок можна пропустити - але оскільки ви вже доклали зусиль для виготовлення та розгортання цих пакунків, немає жодної реальної цінності в тому, щоб викинути свою роботу. Тому я б запропонував продовжувати виробляти ваші пакети Debian.