Контейнеры Docker: простое объяснение на примере аренды офиса

Перевод статьи «Docker Containers Explained by Renting Office Space».

За последние 15 лет разворачивать веб-приложения и управлять ими стало в разы проще.

Начнем с того, что такие сервисы как Amazon Web Services позволяют вам запросто арендовать часть сервера с применением виртуальных машин. Благодаря этому вам не приходится покупать сервер целиком и запускать его, скажем, в собственной кладовке.

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

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

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

Итак, представьте, что вы владелец маленькой компании, занимающейся разработкой ПО. У вас есть пятеро сотрудников и вы ищете офис.

История офисных пространств и серверов

Давайте вернемся на 20 лет назад, в 2000 год. Если бы вы в то время искали офис для маленького стартапа, у вас было бы очень мало вариантов, к тому же они были бы очень дорогостоящими. Вы могли бы:

  1. Купить маленький офис в торговом центре (или в каком-то похожем здании).
  2. Подписать договор долгосрочной аренды со значительным авансовым платежом.

Выводя свой продукт в онлайн, вы бы столкнулись с похожими трудностями. Вам бы пришлось купить целый сервер, где-то его установить и следить за тем, чтобы он был доступен онлайн 24/7. Это очень неэффективно.

Но за последние 20 лет ваши варианты аренды офисного пространства существенно расширились! В связи с ростом популярности технологических стартапов появилась возможность арендовать часть офиса на год или даже с помесячной оплатой.

А с тех пор как в 2010-х трендом стали коворкинги, вы можете арендовать отдельный стол или закрытое помещение в общем пространстве, где одновременно работают многие компании!

Параллельно изменились отношения между офисными зданиями и командой людей, нуждающихся в помещении.

Когда вы покупаете весь офис целиком, вам также нужно заниматься всеми сопутствующими вещами: поставлять снеки для сотрудников, оплачивать уборку, покупать мебель и т. п. Если принять, что физическое пространство это «железо», то офисные услуги это программное обеспечение. А офис-менеджер это операционная система, поскольку именно он регулирует работу офиса.

Но по мере того как офисное пространство стало более доступным, очень сильно повысилась сложность офисных сервисов. Другими словами, теперь у нас большее число операционных систем, которые должны работать вместе.

Возьмем пример. Скажем, ваша компания арендовала один этаж в большом офисном здании. Там, в этом здании, должен быть главный координатор, занимающийся всеми этажами, а у вас должен быть ваш собственный офисный координатор, занимающийся всеми сервисами на вашем этаже.

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

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

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

Разница между виртуальными машинами и контейнерами

Давайте теперь привяжем это к виртуальным машинам и контейнерам.

Подобно тому, как все происходит в нашем втором сценарии, виртуальные машины добавляют собственную операционную систему поверх существующей ОС сервера.

Им приходится использовать слой связующего ПО — гипервизор — чтобы каждая виртуальная машина могла пользоваться ресурсами железа.

Выглядит это примерно так:

Итак, есть три слоя программного обеспечения, которые должны работать вместе и бок о бок с файлами в вашем приложении:

  1. ОС хоста,
  2. гипервизор,
  3. гостевая ОС.

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

А сейчас давайте вернемся к примеру офисных пространств и разберемся, что такое контейнеры. Представьте, что на дворе 2015 год — в это время уже стали популярными коворкинги.

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

Другими словами, вы можете воспользоваться всеми преимуществами уже существующей операционной системы!

Вот как это выглядит:

Отлично! Теперь каждый директор может сфокусироваться на ведении дел своей компании.

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

Это делает контейнеры намного более масштабируемыми, чем виртуальные машины. Вы можете запросто развернуть новые контейнеры в стандартизированной среде, с меньшим количеством точек отказа. Контейнеры также наиболее экономичны, поскольку вам не приходится оплачивать лишнее ПО.

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

Имейте в виду, что на AWS есть сотни серверов, работающих под управлением одной и той же ОС по всему миру. Это означает, что вы можете легко управлять контейнерами с вашим веб-приложением по всему миру с минимальными затратами и минимальной пользовательской настройкой.

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

Давайте вернемся к исходной точке этой статьи. Docker позволяет пользователям создавать контейнеры и управлять ими.

Применяя нашу аналогию, сервис Docker это не здание как таковое, потому что здание это железо (серверы) и Amazon Web Services. Также это не отдельная компания, арендующая офисное пространство, такие компании это скорее контейнеры.

В этом случае Docker больше похож на компанию, управляющую коворкингом. Эта компания позволяет вам арендовать офисное пространство (или место на сервере) новым способом!

[customscript]techrocks_custom_after_post_html[/customscript]

[customscript]techrocks_custom_script[/customscript]

Оставьте комментарий

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

Прокрутить вверх