По-перше, хоча Docker іноді розглядається і використовується як спеціальна система упаковки, він фактично вирішує зовсім іншу проблему: Docker стосується запуску програм. Система Docker дозволяє описувати послуги, які можна масштабувати за бажанням, і контролювати рої контейнерів. Пакети Debian призначені для встановлення програм, і вони здатні обробляти залежності між версіями програмного забезпечення. Докер звичайно, не можна кваліфікувати як упаковки, що спускаються: кожен "пакет" може мати лише одну залежність, система не має "рекурсивної збірки" і не підтримує складних обмежень версії!
Можливою відповіддю буде те, що якщо ви готові написати пакет Debian для своєї програми, ви також можете використовувати Docker для розгортання програми. Цього можна досягти за допомогою сценарію конфігурації, apt_setup.sh
який би виглядав так
apt-key add - <<EOF
-----BEGIN PGP PUBLIC KEY BLOCK-----
<YOUR RELEASE OFFICER PGP KEY GOES HERE>
EOF
cat >> /etc/apt/sources.list <<EOF
deb https://my.organisation.org/repo debian-jessie main
apt-get update -y
apt-get upgrade -y
EOF
і Dockerfile
по лінії
ADD apt_setup.sh /root
RUN sh -ex /root/apt_setup.sh && rm /root/apt_setup.sh
RUN apt-get install -y my-node-js-package
(У вашій конкретній ситуації це apt_setup.sh
буде складніше, додавши сховища вузлів і деякі допоміжні пакети, такі як apt-transport-https .)
Тому дійсно можливо одночасно використовувати пакети Debian та Docker ...
Моя кишка […] говорить мені, що якби деб-пакети добре підходили, це було б частіше
Це правильна помилка, яка змушує нас запитати себе, чому Docker виявляється популярним як спеціальна система упаковки, хоча вона не має на меті бути такою. (Дивись вище.)
"Офіційна" система упаковки з даного розповсюдження - це лише можливість багатьох інших встановити програмне забезпечення в якомусь обчислювальному середовищі. Є багато інших джерел, таких як менеджери пакунків, характерні для спільноти, такі як npm чи opam, дерева портів, такі як pkgsrc та звичайний розподіл вихідного коду. З цього погляду легко зрозуміти успіх Docker як спеціальної системи пакування:
Технічні характеристики Docker дуже близькі до сценарію оболонки, і незалежно від джерела, яке ми отримуємо, ми встановлюємо програмне забезпечення за допомогою оболонки.
Докер має "вбудовану" (платну) послугу розміщення виробів, які він виробляє, Docker Hub .
Тепер яка сила пакетів Debian над зображеннями Docker як пакетної системи? Жорсткий контроль над залежностями при установці. (Можливість оновлення та поновлення також існує, але не має практичного значення, якщо ми реалізуємо шаблон непорушного сервера .) Це призводить до
Висновок
Якщо у вас є лише один продукт, розгорнутий в одній версії (що характерно для SaaS), ваші потреби в управлінні версіями дуже прості, а використання Docker як спеціального менеджера пакунків не повинно мати жодних серйозних недоліків. Як тільки ви працюєте з декількома версіями одного продукту або декількох продуктів, складність проблеми з обмеженнями версій, яку потрібно вирішити, збільшується, і для цього вам потрібен відповідний інструмент, який може бути пакетами Debian або деякою системою управління конфігурацією, якщо ви змішування програмного забезпечення різного походження.