Авторы Хирен Рупчандани, Абхинав Джангир и Ашиш Лепча

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

Преимущества развертывания контейнеров

  • Запускайте множество отдельных приложений на одном и том же количестве серверов.
  • Доставляйте готовые к запуску приложения в контейнерах, которые содержат все коды, библиотеки и зависимости, необходимые любому приложению.
  • Снижение затрат на операции с инфраструктурой. Обычно на одной виртуальной машине (виртуальной машине) работает много контейнеров.
  • Масштабируемость решения на уровне микросервисов/функций – нет необходимости масштабировать экземпляры/виртуальные машины.
  • Более высокий уровень безопасности. Полная изоляция приложений позволяет размещать основные процессы каждого приложения в отдельных контейнерах.
  • Мгновенная репликация микрослужб с помощью реплик и наборов развертывания.
  • Гибкая маршрутизация между службами, изначально поддерживаемыми платформами контейнеризации.
  • Полная переносимость между облаками и локальными расположениями.
  • Независимая от ОС — им не нужна ОС для работы; только ядро ​​контейнера развертывается на хост-ОС.
  • Быстрое развертывание с гидратацией новых контейнеров и завершением старых контейнеров с теми же средами.
  • Легкий. Без ОС контейнеры являются легкими и менее требовательными к использованию ресурсов сервера, чем изображения.

Почему развертывание контейнеров?

  • Развертывание контейнеров может заменить многие задачи, которые ранее выполнялись ИТ-операциями.
  • Когда такой инструмент, как Docker, развертывает несколько контейнеров, он помещает приложения в виртуальные контейнеры, работающие в одной и той же операционной системе. Это дает преимущество, недоступное виртуальным машинам.
  • Использование виртуальной машины требует запуска вся гостевой операционной системы для развертывания одного приложения.
  • Это дорого и медленно при развертывании большого количества приложений.
  • Если вы развернете контейнер Docker, в каждом контейнере будет все необходимое для запуска приложения, и его можно будет легко развернуть вверх или вниз. Strong> для тестирования.
  • Именно так развертывание контейнера экономит такие ресурсы, как хранилище, память и вычислительную мощность, а также ускоряет Конвейер CI/CD.

Виртуальные машины

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

Докер

  • Docker — это платформа с открытым исходным кодом для создания, развертывания и управления контейнерными приложениями.
  • Он позволяет разработчикам упаковывать приложения в контейнеры — стандартизированные исполняемые компоненты, объединяющие исходный код приложения с библиотеками операционной системы (ОС) и зависимостями, необходимыми для запуска. этот код в любой среде.

Компоненты Докера

DockerFile

  • Каждый контейнер Docker начинается с простого текстового файла, содержащего инструкции по созданию образа контейнера Docker.
  • DockerFile автоматизирует процесс создания образа Docker. По сути, это список инструкций интерфейса командной строки (CLI), которые Docker Engine запустит для сборки образа.

Докер-образы

  • Образы Docker содержат исполняемый исходный код приложения, а также все инструменты, библиотеки и зависимости, которые необходимы коду приложения для запуска в качестве контейнера.
  • Когда вы запускаете образ Docker, он становится одним экземпляром (или несколькими экземплярами) контейнера.
  • Несколько образов Docker можно создать из одного базового образа, и они будут иметь общие черты своего стека.

Докер-контейнеры

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

Преимущества докера

  1. Более быстрый выход на рынок
  2. Продуктивность разработчиков
  3. Скорость развертывания
  4. Сокращение ИТ-инфраструктуры
  5. Операционная эффективность ИТ
  6. Более быстрое решение проблемы
  7. Портативность

Установка докера

  • Для Windows Docker Desktop можно установить с помощью гипервизораили WSL 2.
  • Для последнего в вашей системе должен быть установлен WSL 2, и вы можете обратиться к одной из наших статей за инструкциями по установке.
  • Вы можете ознакомиться с этими рекомендациями по установке Docker в Windows и с этими рекомендациями для MacOS.

Создание необходимых файлов

  • Чтобы наш проект был готов к контейнеризации, нам нужно создать 2 дополнительных файла с именами Dockerfile и docker-compose.yml.

Файл Docker

  • Docker может автоматически создавать образы, читая инструкции из файла Docker.
  • Dockerfile — это текстовый документ, содержащий все команды, которые пользователь может вызвать в командной строке для сборки образа.
  • С помощью сборки docker пользователи могут создать автоматическую сборку, которая последовательно выполняет несколько инструкций командной строки.

Докер Сочинять

  • Compose — это инструмент для определения и запуска многоконтейнерных приложений Docker.
  • В Compose вы используете файл YAML для настройки служб вашего приложения.
  • Затем с помощью одной команды вы создаете и запускаете все службы из вашей конфигурации.
  • Использование Compose представляет собой трехэтапный процесс:
    - Определитесреду вашего приложения с помощью Dockerfile, чтобы его можно было воспроизвести где угодно.
    Определите службы, из которых состоит ваше приложение, в файле docker-compose.yml, чтобы их можно было запускать вместе в изолированной среде.
    Запустите docker-compose, и команда Docker compose запустит и запустит все ваше приложение. В качестве альтернативы вы можете запустить docker-compose up с помощью бинарного файла docker-compose.
  • Dockerfile и файл Docker Compose будут выглядеть так в нашем проекте:

Контейнеризация с помощью Docker

Сборка Docker

  • Команда сборки docker создает образы Docker из файла Dockerfile и «контекста». Контекст сборки — это набор файлов, расположенных по указанному PATH или URL.
  • Процесс сборки может ссылаться на любой из файлов в контексте. Например, ваша сборка может использовать инструкцию COPY для ссылки на файл в контексте.
  • Команда для создания/сборки образа Docker, введите следующее:
docker build -t face_mask .

Докер Бег

  • Docker запускает процессы в изолированных контейнерах. Контейнер — это процесс, который запускается на хосте. Хост может быть локальным или удаленным.
  • Когда оператор запускает docker run, запущенный контейнерный процесс изолируется, поскольку у него есть собственная файловая система, собственная сеть и собственное изолированное дерево процессов, отдельное от гостья.
  • Команда для запуска созданного образа докера:
docker run -p 8000:8000 face_mask

Тестирование приложения на локальном хосте

  • Теперь мы готовы протестировать наше приложение на локальном хосте:

  • Давайте посмотрим, работает ли прогноз:

Что дальше?

  • Контейнерные приложения стали популярным выбором среди команд DevOps и других организаций, отказавшихся от традиционных подходов к разработке программного обеспечения.
  • Развертывание контейнеров также хорошо сочетается с процессами и инструментами непрерывной интеграции (CI) и непрерывной доставки (CD).
  • В следующей статье этой серии мы увидим, как масштабировать наше приложение, содержащееся в докере, с помощью Kubernetes, чтобы наше приложение было готово к непрерывной интеграции и непрерывная доставка.

Подпишитесь на нас, чтобы не пропустить новые статьи, посвященные науке о данных, машинному обучению и искусственному интеллекту.

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