Люди сказали много хороших вещей о контейнерах. Но есть одно важное, что многие начинающие выходят. Давайте начнем с Определение докера :
Контейнер — это стандартная единица программного обеспечения, который упаковывает код и все его зависимости, поэтому приложение работает быстро и надежно из одной вычислительной среды к другой.
Это определение подчеркивает масштабируемость и переносимость, предоставляемую контейнерами. Если вы похожи на меня, кто начал обучать контейнеры, запустив команды Docker и Kubectl, у вас, вероятно, уже есть хорошая охвата этих гибких возможностей. Однако, чтобы по-настоящему понять контейнеры, необходимо также понимать баланс между изоляцией времени выполнения и плотностью рабочей нагрузки.
Изоляция времени выполнения Можно сделать на разных уровнях, таких как процессы, контейнеры, контейнеры Hyper-V, виртуальные машины и выделенные серверы. С выделением уровня процесса, оборудование, ядро ОС и системные ресурсы (например, файловая система) все общие. На другом конце, с выделением на уровне сервера, ни один из них не передается. Уровень контейнера и выделения уровня VM падают где-то посередине. В большинстве случаев изоляция уровня контейнера подразумевает совместное оборудование и ядро ОС, но не системные ресурсы.
Плотность рабочей нагрузки О том, что использование ресурсов, например, максимально используя ресурсы процессора и памяти на сервере в центре обработки данных. Он определяется как отношение ресурсов, потребляемых своей рабочей нагрузкой по ресурсам, которые имеются доступны для выполнения этой работы. Чем выше плотность рабочей нагрузки, тем больше вы можете сделать с вычислениями, которые вы купили. Проще говоря, речь идет о экономии денег. Для многих организаций это единственная самая важная причина переключиться на контейнеры.
Сейчас приходит конфликт между изоляцией и плотностью. Основная мотивация для изоляции является безопасность. Например, если ваши требования к безопасности мандат изолированных файловых систем, вам нужно сделать в аренду изоляции уровня контейнера, так как традиционный способ запуска двух отдельных процессов не будет работать. Если ваша команда безопасности рекомендует изолированные ядра ОС, вам может потребоваться создать отдельные VMS для различных рабочих нагрузок. Если компания хочет, чтобы их услуги не разделили ту же оборудование с любой другой компанией, мы смотрим на изоляцию на уровне сервера. По-видимому, чем выше требования к изоляции, тем больше стоимость на дополнительных копиях файловой системы, ОС или сервера, а тем меньше комнаты для оптимизации использования ресурсов, другими словами, более низкая плотность.
Подход на основе контейнера ударяет баланс между изоляцией времени выполнения и плотностью рабочей нагрузки. Это в значительной степени суммирует этот пост. Как я уже упоминал в начале, существует много великих вещей о контейнерах. Но также стоит упомянуть, что контейнеры не на 100% безопасны (ничего нет) из-за общего ядра ОС и оборудования. Более высокая плотность также может привести к повышению риска сбоя аппаратного обеспечения (например, когда система охлаждения не удается). Однако это проблемы, которые мы можем обрабатывать отдельно. На практике контейнеры преобладают.
Первоначально опубликовано в: https://link.medium.com/exqfmwgka9.
Оригинал: «https://dev.to/ppbits/architecture-101-one-thing-you-need-to-know-to-understand-containers-57ao»