Что такое Docker? В чем отличия от виртуальной машины?

Что такое Docker?

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

Отличие от ВМ.

В чем преимущество использования Docker перед виртуальной машиной? Чем она отличается от виртуальной машины?

По факту Docker ведет себя, как виртуальная машина. Он использует возможности виртуальных машин, но делает это немного по другому. Это высокоуровневое приложение, которое предоставляет легкое решение виртуализации для изолированного и безопасного запуска процессов. В нем используется LXC, cgroups и ядро ​​Linux для создания виртуальной среды. Поэтому Docker не включает в себя операционную систему, а полагается на ту, в которой он установлен, для обеспечения базовой инфраструктуры.

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

Преимущество контейнеров.

  • Виртуальные машины требуют больших накладных расходов и требуют больше ресурсов, чем контейнеры. Контейнеры легче.
  • Контейнер Docker занимает несколько МБ, тогда как виртуальные машины могут занимать дисковое пространство, измеряемое уже гигабайтами.
  • Развертывание виртуальной машины для каждого приложения будет дороже.
  • Контейнеры — очень экономичное решение по сравнению с виртуальными машинами, поскольку разработчики могут развертывать их самостоятельно в пределах одной ВМ.
  • Виртуализация на основе контейнеров — отличный вариант для микросервисов, DevOps и непрерывного развертывания.
  • Контейнеры можно развернуть быстрее, чем виртуальную машину. Потому что это тоже самое, что запустить обычный процесс в системе.
  • Контейнеры можно быстро масштабировать. Здесь, лишь стоит вопрос репликации образа докера на другой узел.

Недостатки контейнеров.

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

Положит ли Docker конец эры виртуальных машин?

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

Является ли docker лучшим решением для работы с контейнерами?

Помимо docker, существует еще и другие контейнерные технологии:

  • Oracle Solaris Zone. Если вы работали с ОС Solaris, то вы скорее всего ощутили простоту управления и гибкость. Это одно из самых популярных технологий контейнеризации в Solaris.
  • Core OS: rkt — еще одна среда выполнения контейнера, предлагаемая базовой ОС.
  • LXC/LXD: это менеджер контейнеров Linux. Кстати, Docker использует возможности LXC.

Docker в отличии от остальных, не зависит от платформы и может работать как в ОС Windows, так и в ОС Linux. А так же имеет очень большое общество и огромное количество уже готовых образов контейнеров. Например, если вы хотите создать веб-приложение, вы можете получить образ веб-сервера, который предварительно создан с веб-сервером, операционной системой и базой данных, совершенно без проблем.

Заключение.

Технология контейнеризации, в том числе docker, очень востребованы в данный момент на рынке IT. Знания этой технологии требуется на многие специальности. Так что, если вы хотите связать свою жизнь с работой в информационных технологиях, то советую изучить подробно эту тему. Лишним не будет.

А пока ответили только на некоторые общие вопросы. В будущем постараюсь немного углубиться в эту тему.

Was this helpful?

2 / 0

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