Что такое Docker ?
Docker - технология, которая позволяет создавать контейнеры (песочницы) для упрощения разработки и запуска приложений на хостовых системах, например на Linux’ах. Docker в некоторой степени напоминает работу систем виртуализации (гипервизоры).
Контейнеры используют ядро текущей операционной системы и делят его между собой. В то время как виртуальные машины с помощью гипервизора используют аппаратные ресурсы. Образ/Image докера это read-only объект, который, по сути, хранит в себе шаблон для построения контейнера. Контейнер — это среда в которой выполняется код. Образы хранятся в репозиториях).
Основные компоненты Docker:
- Образ (image) - образ диска, который будет запускаться в контейнере.
- Контейнер (container) - виртуальная машина, в которой запущен образ.
- Репозиторий образов (image repository) - удалённое или локальное хранилище для образов.
Для чего он нужен
Начать необходимо с проблемы.
Давайте представим, что нам необходимо разработать приложение. Но мы не знаем, ни где это приложение будет запускаться, ни кто им будет пользоваться. Другими словами - мы решаем проблему кроссплатформенности. Так как существует огромное, постоянно растущее, множество операционных систем и платформ, мы должны предвидеть все варианты. Альтернативное решение - можно скомпилировать приложение под наиболее популярные платформы. Но это очень объемная и вовсе не тривиальная задача. Более адекватное решение - это разрабатывать под одну систему, систему которую мы можем виртуализировать. До появления docker многие так и решали проблему, но такие приложения получались достаточно громоздкими и ресурсоемкими.
При использовании Докера, такой проблемы не возникнет в принципе. Теперь достаточно иметь установленную программу Docker, которая по одной вашей команде установит окружение, описанное в конфиге для запуска вашего приложения.
Докер - это движок, который запускает виртуальную операционную систему, имеющую чрезвычайно маленький размер. Docker позволяет запустить ОС Linux в изолированной среде очень быстро, в течение нескольких минут.