Введение

В мире разработки программного обеспечения существует множество различных способов развертывания приложений. Например, вы можете использовать виртуальные машины (VM) или контейнеры, упаковывая код и зависимости в абстракцию на прикладном уровне. Контейнеры абстрагируются от всех сложностей, связанных с запуском операционных систем и ядер операционных систем на вашем компьютере, так что только ваше приложение имеет значение с точки зрения производительности, масштабируемости, рисков безопасности и накладных расходов, связанных с управлением несколькими виртуальными машинами/контейнерами в каждой среде приложения; следовательно, это упрощает работу разработчиков, которые работают в разных командах или даже в разных средах (разработка, тестирование или производство).

Контейнеры — это абстракция на уровне приложения, которая упаковывает код и зависимости вместе.

Контейнеры — это абстракция на уровне приложения, которая упаковывает код и зависимости вместе. Контейнер — это легкий, быстрый и современный способ запуска приложений путем их инкапсуляции в автономной среде.

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

Несколько контейнеров могут работать на одном компьютере и совместно использовать ядро ​​ОС с другими контейнерами, каждый из которых работает как изолированный процесс в пользовательском пространстве.

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

О.С. ядро совместно используется всеми контейнерами в пуле.

Контейнеры занимают меньше места, чем виртуальные машины (образы контейнеров обычно имеют размер в десятки МБ) и запускаются практически мгновенно.

Наиболее очевидным преимуществом контейнеров является то, что они занимают меньше места, чем виртуальные машины (образы контейнеров обычно имеют размер в десятки МБ). Это очень важно, потому что, если вы используете Windows или Linux и вам нужно хранить файлы виртуальной машины, вы можете обнаружить, что данные на сотни ГБ занимают ценное место в серверной комнате. У контейнеров такой проблемы нет, поскольку они представляют собой просто образы без существующей операционной системы; пока ваша хост-ОС поддерживает Docker, вы можете запускать все, что захотите.

Еще одна замечательная особенность контейнеров заключается в том, как быстро они запускаются: менее одной минуты для большинства современных серверов! Это делает их очень эффективными для быстрого развертывания приложений, не ожидая часами, прежде чем увидеть какие-либо результаты от этих машин, работающих на полной мощности (или близких). Это также означает, что если что-то пойдет не так внутри самого приложения — например, если произошла ошибка во время развертывания — вы относительно быстро узнаете, что пошло не так, не дожидаясь завтрашнего утра, когда все вернутся с обеденного перерыва, чтобы выяснить это. как все пошло не так».

Как работает контейнеризация?

Контейнер — это легкая портативная единица, которую можно легко перемещать между средами. Контейнеры изолированы от хост-машины и друг от друга. Это упрощает создание нескольких контейнеров и управление ими одновременно, в каждом из которых могут быть запущены разные версии служб (например, базы данных).

Контейнеры также позволяют вам распределять рабочие нагрузки между командами в вашей организации — это означает, что вам не нужно беспокоиться о том, что у каждой команды есть собственный экземпляр приложения или базы данных! Вы можете развертывать контейнеры с помощью всего лишь одного инструмента командной строки (например, Docker), что означает, что они будут запущены и запущены в течение нескольких секунд без какой-либо настройки.

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

В контексте разработки приложений существует три среды: разработка, тестирование и производство. Разработка — это то, где вы пишете код. Тест — это то, где вы запускаете автоматизированные тесты, чтобы убедиться, что ваш код работает должным образом в реальной среде (например, в промежуточной или рабочей среде). И, наконец, производство — это то место, где ваш код действительно работает!

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

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

Контейнер — это легкая виртуальная машина, которую можно быстро запустить и закрыть. Контейнеры предназначены для запуска приложений изолированно друг от друга, что дает им возможность работать на любой операционной системе и оборудовании.

Контейнеры используются по нескольким причинам:

  • Они обеспечивают большую гибкость, чем виртуальные машины (ВМ), изолируя приложение от базовой хост-системы. Это позволяет разработчикам развертывать свои приложения в разных средах без их поломки, что может сэкономить время и деньги при создании приложения масштаба предприятия.
  • Контейнеры также позволяют быстро тестировать код без каких-либо специальных изменений оборудования или конфигурации, поскольку они полностью переносимы на различные платформы (например, Linux и Windows).

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

Контейнеры — это способ упаковки приложений и их зависимостей вместе таким образом, чтобы их можно было запускать в любой системе без необходимости использования всего стека инфраструктуры. Поскольку разные части вашего приложения могут разрабатываться разными командами, вам также нужен способ распространения ваших приложений без необходимости распространять весь стек вашей инфраструктуры. В идеале это позволило бы нам «упаковать» наше приложение таким образом, чтобы мы могли беспрепятственно передавать его из среды в среду. Вот что делают контейнеры!

Поскольку контейнеры работают поверх Linux, они легче, чем виртуальные машины (ВМ). На самом деле вы можете обнаружить, что использование виртуальных машин просто нецелесообразно при попытке построить крупномасштабную архитектуру микросервисов, поскольку они требуют дополнительных ресурсов, таких как память и мощность ЦП, что часто приводит к более высоким затратам, чем запуск контейнеров непосредственно с нуля в операционной системе вместо запуск их внутри виртуальных машин, где эти дополнительные ресурсы вообще не нужны.

Заключение

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

Не ждите, пока не станет слишком поздно — начните прямо сейчас!