Разница между пакетами и образами Docker

Я понимаю PPA, но Docker для меня в новинку. Чем Docker и Dockerfiles отличаются от Личных архивов пакетов Ubuntu (PPA) с точки зрения управления пакетами?

Пакеты и образы контейнеров - это два способа распространения программного обеспечения во избежание конфликтов, хотя они делают это с использованием совершенно разных подходов.


Пакеты представляют собой пакеты файлов, которые устанавливаются менеджер пакетов например, RPM в RHEL или APT в Ubuntu, который проверяет, чтобы убедиться, что несколько пакетов используют совместимые библиотеки, не используют одни и те же имена файлов и т.д., Прежде чем записывать файлы в одну общую файловую систему. Затем пользователи могут запускать программы напрямую.

Посылки обычно приходят из хранилища, и люди, управляющие репозиториями, должны решать, какой пакет получает контроль над каждым именем файла, сетевым портом, системным идентификатором пользователя и т.д., А также над тем, какие версии программ будут упакованы. Пакеты создаются из файлов спецификаций, в которых перечислены файлы, которые должны быть включены.

PPAs (Личные архивы пакетов) позволяют отдельным лицам и небольшим группам публиковать свои собственные пакеты для программного обеспечения, которое еще не было принято в основные репозитории.


Контейнеры это изолированные ячейки, в которых может выполняться программа или группа программ, изолированных от остальной системы. Благодаря поддержке ядром Linux пространств имен для каждого процесса они могут получать доступ только к своим собственным файлам (с отдельным корневым каталогом и таблицей монтирования), сетевым интерфейсам и т.д. (Как гораздо более всеобъемлющая форма chroot.)

Поскольку контейнер может получить доступ только к своим собственным файлам, существуют изображения, пакеты файлов, которые формируют начальное состояние контейнера. Нет необходимости в такой же координации, как в случае с пакетами, из-за песочницы. Каждый контейнер включает в себя определенные версии библиотек, которые ему нужны.

Докер является менеджером контейнеров: он запускает контейнеры из указанных изображений, настраивает их сетевые интерфейсы, регистрирует их выходные данные и т.д.

Он также управляет изображениями: он может создавать их из скриптов, называемых Dockerfiles, и загружать их в и загружать из Докер-концентратор, набор (в основном) управляемых пользователем репозиториев.


Эти два подхода можно объединить: вы можете создать образ на основе минимального образа RHEL или Ubuntu и установить в него пакеты с помощью yum или apt-get, запущенных внутри контейнера.

Возможно и обратное: пакет может установить образ, хотя я не слышал, чтобы кто-нибудь это делал.

И, конечно же, самый простой способ установить сам Docker - это с помощью менеджера пакетов.

Аналогичным образом, все еще существуют роли для систем управления конфигурацией, таких как Puppet и Chef: настройка контейнеров внутри или управление тем, какие контейнеры развертываются на каких машинах, и подключение их всех вместе.

Docker и PPA - это совершенно разные вещи.

Мне непонятно, о чем вы спрашиваете. Вы спрашиваете о пакетах и контейнерах как способах распространения программного обеспечения? Контейнеризация и виртуализация как способы изоляции программ? Концепция PPA пришла из Ubuntu, но как конкретно относится к RHEL 7?

Я решил задать этот вопрос, потому что у кого-то был вопрос о докерах и о том, как управляется безопасность. PPA - это что-то вроде личного репозитория, к которому можно получить доступ для управления пакетами, не так ли? Я предполагаю, что более конкретно, является ли docker больше похожим на песочницу с приложением или набором приложений внутри нее, которыми можно управлять в целом, как rpm? Вопрос, который у меня есть, больше сосредоточен на управлении пакетами.

Привет, deltab, ваш ответ стал более осмысленным после прочтения о docker. Docker, по-видимому, представляет собой концепцию модуля, сделанную более модульной, переносимой и более безопасной (вы сказали “контейнеризация и виртуализация” и “изоляция программ”). Как управляются докеры? В настоящее время на справочных страницах, похоже, нет подходящего раздела для docker. Будет ли yum предоставлять */docker …тип сделки - это метод поиска, а затем, в конечном итоге, загрузки приложения docker или набора приложений?

Да, ваши описания PPA и контейнеров Docker довольно точны. (Обратите внимание, что Docker - это название системы, которая управляет контейнерами, а также компании, которая ее производит.) Хорошо, итак, ваш вопрос больше похож на “В чем разница между пакетами и контейнерами Docker?”; Я могу ответить на это.

Технология, которая, судя по всему, устраняет большую часть потребности в серверах chef и управления конфигурацией, таких как Bcfg2 для linux paas.

Да, и еще один вопрос: как мне управлять контейнерами docker? Я читаю сайт docker, который дал мне Лейн.

@paulcube: Я редактирую ваш вопрос, чтобы сфокусировать его на пакетах и изображениях контейнеров. Я думаю, что уже есть вопрос о сравнении контейнеров и виртуальных машин.

Можете ли вы указать мне на этот вопрос или рассказать мне, как вы искали этот вопрос? Спасибо deltab.