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

0
441
views

Перевод статьи «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 больше похож на компанию, управляющую коворкингом. Эта компания позволяет вам арендовать офисное пространство (или место на сервере) новым способом!

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here