За время своего существования Docker из небольшого внутреннего проекта превратился в мощную инструмент для работы с контейнерами. Как работает эта платформа, кому и зачем она нужна — рассказываем в статье.
Как устроен Docker
Ключевая задача Docker — обеспечить пользователю удобную работу с контейнерами: их создание, автоматизацию и управление всем жизненным циклом. Платформа состоит из семи компонентов, каждый из которых играет определенную роль.
- Docker host
- Docker daemon
- Docker client
- Docker image
- Docker container
- Docker registry
- Dockerfile
Устройство, на базе которого работает платформа и запущенные контейнеры. В роли хоста может выступать обычный ПК или ноутбук, физический сервер или ВМ.
Программа, работающая в фоновом режиме, которая находится в постоянном ожидании команды. Именно к этому компоненту направляются все запросы по управлению контейнерами. Демон «слушает» поступающие команды и выполняет запрашиваемые операции.
Компонент, обеспечивающий взаимодействие между пользователем докера и демоном. Можно использовать обычный GUI, консоль или API.
Образ, используемый для развертывания контейнера. Фактически представляет собой фиксированный набор файлов, который можно использовать для запуска контейнера на новом хосте. Проще говоря, докер-образ похож на CD с программой: чтобы ее установить, достаточно просто вставить диск в компьютер.
Запущенное на конкретном хосте приложение. Если использовать сравнение из предыдущего пункта, это установленная и включенная на компьютере программа.
Все Docker image (образы) хранятся в специальных репозиториях. Они могут быть как публичными, так и локальными — доступ к которым имеет конкретная компания-разработчик или проектная команда.
Dockerfile — это инструкция по сборке образа.
Почему разработчики переходят на контейнеры и Docker
Сегодня Docker — это не просто инструмент для разработки, доставки и развертывания контейнерных приложений, а настоящий отраслевой стандарт.
Запускайте контейнерные приложения
в облаке и с легкостью управляйте ими
с помощью Containerum Managed Kubernetes Service
Преимущества Docker
Упрощение настройки окружения и решение проблем зависимостей
В Docker image уже содержится все, что требуется для запуска приложения. Любой образ (image) состоит из нескольких «слоев», которые в совокупности создают необходимую среду. Например, вы создаете цифровой продукт и используете для его разработки Python. Для его запуска на сервере требуется определенное окружение — среда выполнения Python. C Docker нам не придется каждый раз ее устанавливать, достаточно поместить в Docker image образ Python.
Точно так же поступим и с другими зависимостями. В итоге мы получим докер-образ, в котором уже собраны все необходимые «слои». Такой подход позволяет разработчикам не тратить ресурсы на непрофильные задачи в виде подготовки окружения и сконцентрироваться на процессе создания приложения.
Все слои докер-образа неизменяемые. Чтобы из образа получить контейнер, достаточно добавить сверху еще один слой — для записи.
Автоматизация развертывания приложений
Установка из готового Docker-образа полностью автоматизирована. Развертывание приложения не требует ручных действий, а значит, снижается и вероятность ошибки. Также контейнерное ПО можно автоматически развернуть на нескольких хостах одновременно. В отличие от традиционного подхода, где на каждом сервере нужно повторить один и тот же алгоритм, использование контейнеров полностью избавляет от этих рутинных процессов и позволяет автоматизировать доставку и развертывание приложений.
Контейнеры и Docker вписываются в микросервисную архитектуру
На смену монолитным приложениям приходят микросервисы. Как можно догадаться из названия, они состоят из нескольких работающих вместе компонентов. В отличие от монолитов, микросервисы слабо связаны друг с другом. Такой подход позволяет сократить время разработки, быстрее выводить цифровой продукт на рынок и гибко дорабатывать его функционал. Контейнеры и Docker логично «ложатся» в эту концепцию и позволяют разработчикам удобно реализовывать микросервисные приложения.
Высокий уровень безопасности приложений
Контейнер полностью изолирован от используемой устройством операционной системы. Приложение работает сугубо внутри своего контейнера без доступа к ОС. Даже если внутри произойдет какой-то сбой или ошибка, это не повлияет на среду за пределами контейнера.
Docker в облаке
Для запуска докер-контейнеров подходит и облачная инфраструктура. Разработчики могут использовать для этого обычный IaaS или присмотреться к готовым инструментам.
Например, Containerum Managed Kubernetes Service обеспечивает быстрый запуск и гибкое управление контейнерными приложениями в эластичном облаке #CloudMTS. Заявку на тестирование можно оставить на странице сервиса.