Введение в Docker. Что это такое и зачем его использовать?

  Максим Крук  | 

  Обновл. 22 Фев 2020  | 

 1469

Если вы планируете начать свою карьеру как DevOps engineer или вы уже работающий DevOps или разработчик в компании, который ещё не освоил этот инструмент, то сейчас самое время. В этом уроке мы рассмотрим, что такое Docker и чем он может быть полезен.

Введение в Docker

Docker — это платформа, которая упрощает процесс сборки, запуска, управления и распространения приложений с помощью виртуализации операционной системы (ОС), на которой он установлен. Первый релиз Docker состоялся в марте 2013 года и был разработан с использованием языка программирования Go (он же Golang), который взял всё самое лучшее из языков C и С++, для решения актуальных проблем разработчиков облачных приложений.

Один из самых частых вопросов: «Чем же Docker-контейнеры отличаются от виртуальных машин?». Дело в том, что виртуальная машина работает с помощью программы Гипервизор (англ. «Hypervisor«), которая создаёт новую машину внутри вашей системы, основываясь на ресурсах, которые вы выделили под неё. Примерами таких программ являются Oracle VM Virtualbox или VMware Workstation Player. Docker же использует возможности ядра Linux, которые позволяют ему создать так называемую виртуализацию операционной системы (англ. «OS-level virtualization»). Таким образом, процессы приложений, запущенных с помощью Docker, вы можете увидеть в списке процессов вашей операционной системы.

На рисунке ниже вы можете увидеть отличия контейнеризации от виртуализации:

Главное отличие виртуализации от контейнеризации заключается в том, что в виртуализации аппаратные составляющие (например, виртуальный процессор, виртуальная оперативная память и т.д.) создаются с помощью Hypervisor, на которые затем устанавливается полноценная операционная система, тогда как во время контейнеризации аппаратные ресурсы (например, процессорное время, сетевые интерфейсы и т.д.) выделяются с помощью ядра операционной системы и изолируются пространствами имён (об этом детальнее мы поговорим в следующих уроках).

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

Какие проблемы решает Docker?


Допустим у нас есть три разных приложения на языке программирования Python, которые мы планируем разместить на одном сервере (не важно будет ли это виртуальный сервер или физическая машина). Каждое из этих приложений использует разные версии интерпретатора Python, библиотек и зависимостей, которые отличаются между нашими приложениями. Так как мы не можем иметь разные версии интерпретатора Python, установленные в одной системе, то это не позволит нам разместить наши приложения на одной машине (то же самое, что и «компьютер», «система»).

Для решения данной задачи мы могли бы использовать три разные физические машины или одну настолько мощную, что позволило бы нам создать в ней три виртуальные. Оба этих варианта решают проблему установки разных версий Python, нужных нам библиотек и зависимостей, но, стоит учесть, что это покупка дополнительных машин/железа, которое затем нужно будет ещё настроить должным образом.

С помощью Docker мы можем сэкономить время и деньги. Машина, на которой запущен Docker, называется Docker Host. То есть, когда вы хотите развернуть приложение на своей машине, Docker создаёт логическую сущность для развёртывания приложения — контейнер.

Сам по себе Docker-контейнер не имеет операционной системы (ОС), но он имеет виртуальную копию списка процессов, сетевого интерфейса и путей монтирования файловой системы. Всё это он наследует от операционной системы, на которой он запущен, так как операционная система распределяет своё ядро между каждым запущенным контейнером. Эта особенность и позволяет изолировать контейнеры внутри системы и отделить их друг от друга. Таким образом, у нас появляется возможность запускать разные контейнеры с разными приложениями с разными зависимостями и библиотеками внутри одной системы до тех пор, пока они имеют одинаковые требования к ОС.

Правило: Docker виртуализирует операционную систему на которой он установлен и запущен, а Hypervisor виртуализирует аппаратные компоненты системы.

Плюсы и минусы использования Docker

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

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

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

   Контейнер не имеет установленной операционной системы, поэтому он потребляет относительно небольшое количество памяти в сравнении с виртуальной машиной (которая требует установки полноценной ОС).

   Docker не требователен к аппаратным ресурсам в сравнении с виртуальными машинами.

Минусы использования Docker как платформы:

   Приложения, которые требуют разные операционные системы, не могут быть размещены на одном и том же Docker Host. Например, если у нас есть 2 приложения под Windows и 2 под Linux, то для них потребуются отдельные машины с установленными ОС Windows и OC Linux, соответственно.

Ключевые составляющие Docker


Docker Engine является одним из самых главных компонентов платформы Docker. Он отвечает за работу Docker как платформы в целом.

Docker Engine — это клиент-серверное приложение, которое состоит из трёх главных компонентов:

   Сервер — это программа, которая работает в фоновом режиме как daemon процесс (команда dockerd).

   REST API — предоставляет интерфейсы через которые программы могут взаимодействовать с daemon процессом.

   Интерфейс командной строки (англ. «Command Line Interface») — с помощью него мы общаемся с REST API (команда docker).

Проиллюстрируем это:


Заключение

В этом уроке мы рассмотрели, что такое Docker, чем он отличается от виртуальных машин, его ключевые преимущества и минусы использования, а также затронули тему ключевых компонентов Docker. В следующем уроке мы рассмотрим установку Docker на Linux и на Windows.


Оценить статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (7 оценок, среднее: 4,86 из 5)
Загрузка...

Добавить комментарий

Ваш E-mail не будет опубликован. Обязательные поля помечены *