Я понимаю PPA, но Docker для меня новичок. Чем Docker и Dockerfiles отличаются от личных архивов пакетов Ubuntu (PPA) с точки зрения управления пакетами?
Пакеты и образы контейнеров - это два способа распространения программного обеспечения, избегая конфликтов, хотя при этом используются совершенно разные подходы.
Пакеты пакеты файлов, которые устанавливаются менеджер пакетов например, RPM в RHEL или APT в Ubuntu, который проверяет, что несколько пакетов используют совместимые библиотеки, не используют одни и те же имена файлов и т. д. перед записью файлов в одну общую файловую систему. После этого пользователи могут запускать программы напрямую.
Пакеты обычно приходят из репозитории, и люди, управляющие репозиториями, должны решить, какой пакет получит контроль над каждым именем файла, сетевым портом, идентификатором пользователя системы и т. д., а также какие версии программ будут упакованы. Пакеты создаются из файлов спецификаций, в которых перечислены файлы, которые следует включить.
PPA (Персональные архивы пакетов) позволяют отдельным лицам и небольшим группам публиковать свои собственные пакеты для программного обеспечения, которое еще не было принято в основные репозитории.
Контейнеры - это «песочницы», в которых программа или группа программ могут работать изолированно от остальной системы. Благодаря поддержке ядром Linux пространств имен для каждого процесса они могут получить доступ только к своим собственным файлам (с отдельным корневым каталогом и таблицей монтирования), сетевым интерфейсам и т. Д. (Как и к гораздо более всеобъемлющей форме chroot).
Поскольку контейнер может получить доступ только к своим файлам, есть изображений, пакеты файлов, которые формируют начальное состояние контейнера. Нет необходимости в такой же координации, как с пакетами, из-за песочницы. Каждый контейнер включает определенные версии библиотек, которые ему нужны.
Докер это диспетчер контейнеров: он запускает контейнеры из указанных образов, настраивает их сетевые интерфейсы, регистрирует их вывод и т. д.
Он также управляет изображениями: он может создавать их из скриптов, называемых Dockerfiles, и выгружать их и скачивать из Докер Хаб, набор (в основном) репозиториев, управляемых пользователем.
Эти два подхода можно комбинировать: вы можете создать образ на основе минимального образа RHEL или Ubuntu и устанавливать в него пакеты, используя yum или apt-get, работающие внутри контейнера.
Возможно и обратное: пакет может установить образ, хотя я не слышал, чтобы кто-нибудь это делал.
И, конечно же, самый простой способ установить сам Docker - это с менеджером пакетов.
Точно так же существуют роли для систем управления конфигурацией, таких как Puppet и Chef: установка контейнеров внутри или контроль того, какие контейнеры развертываются на каких машинах, и их соединение.