Начало работы с Docker, часть первая

Первый вопрос: что такое Докер?

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

Когда появится Docker?

Docker играет свою роль на этапе развертывания жизненного цикла разработки программного обеспечения (SDLC). Docker упрощает процесс развертывания приложения и решает множество связанных проблем.

Что делает Docker?

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

Простая метафора, которую можно использовать, чтобы понять это: представьте, что вы переезжаете, и вам нужно взять все свои вещи с собой в другую страну. Вещи, которые вы перемещаете, бывают разных размеров и форм и имеют разные требования (хрупкие, «Это конец» и т. Д.). Вы должны учитывать транспорт, упаковку, квалифицированный труд, доставку. Но если у вас есть контейнер, все эти проблемы исчезнут, и все, что вам нужно сделать, это правильно упаковать свои вещи в контейнер.

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

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

Как создавать контейнеры Docker

Файлы Docker используются для создания образа Docker, и образ также будет содержать весь код проекта. Один и тот же образ Docker можно использовать для запуска нескольких контейнеров, в каждый из которых вносятся изменения в базовом образе. Этот окончательный образ можно затем загрузить в концентратор Docker и поделиться с другими соавторами для тестирования и развертывания. Создание образа Docker - основная задача. Контейнер Docker - это просто экземпляр образа Docker.

Определения

Файл Docker: текстовый документ, содержащий все команды, которые пользователь может вызвать в командной строке для сборки изображения.

Docker Image: шаблон только для чтения, используемый для создания контейнеров, созданных пользователями Docker; хранится в концентраторе Docker или в вашем локальном реестре.

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

Что такое Docker Compose?

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

Допустим, вы разрабатываете полнофункциональное приложение с использованием MongoDB, Express, Angular и Node.js. Вы должны использовать три файла Docker, содержащих три контейнера. Один контейнер для MongoDB, который является базой данных, и один контейнер для сервера, который представляет собой комбинацию Express и Node.js, и еще один для Angular (клиентский интерфейс).

Если вы не знаете, как работает полнофункциональное приложение, сначала у вас есть клиентская сторона, на которой работает пользователь. Пользователь отправляет запрос в приложение, которое затем отправляет запрос на сервер. Сервер, то есть бэкэнд, выполняет все функции. Затем сервер берет данные из базы данных (в данном случае MongoDB) и отправляет их пользователю. Все файлы Docker в контейнерах контролируются файлом Docker Compose, который написан на YAML. В файле YAML вы должны указать место, где расположены контейнеры, а также номера портов, которые Composer должен использовать для взаимодействия с другими контейнерами.

Проще говоря, Docker Compose используется для запуска многоконтейнерных приложений. Каждый контейнер будет запускать автономное приложение и может взаимодействовать с каждым контейнером, находящимся на одном и том же хосте.

Docker использует архитектуру клиент-сервер. См. Изображение ниже для пояснения.