Docker: контейнеры, которые могут совершить софтверную революцию

Что мы всё о глобальном да о глобальном? О рынке облачных разработок и телодвижениях больших компаний. О ЦОДах в технологическом, экономическом и визионерском смыслах. О том, как корпорация A приобрела компанию B и сейчас, без сомнений, завоюет ещё не созданный, но уже зарождающийся рынок C. Само собой разумеется, прослеживать глобальные тенденции несложнее: они на виду, а вдруг и не на виду, то стоит самую малость копнуть – и вот они как на ладони. А дальше прикладываем мало логики, добавляем щепотку здравого смысла, приправим всё соусом из свежих аналитических отчётов – и вуаля, готов глобальный эпистолярный винегрет!

Но вот о разработках, а также красивых образчиках открытого исходного кода, мы говорим не то дабы довольно много. А ведь и в этих палестинах происходят очень увлекательные вещи! Вот не потом как 26 ноября опубликована колонка вашего покорного слуги о глобальном – правильнее, о том, сможет ли кто-то противостоять всесильному Amazon, медлено монополизирующему рынок облачных вычислений. Не страно, что смельчаки побороться с Amazon находятся, и одним из них стал Лукас Карлсон, трудящийся над продуктом CTL-C. И не стали бы мы обращать внимание на данный продукт, если бы не одна подробность:

“CTL-C — это именно необычное объединение IaaS и PaaS, дополненное разработками AppFog. Но с добавлением одной ответственной составляющей, без которой продукт CenturyLink мало чем отличался бы от Amazon S3. Карлсон добавил в CTL-C популярную опенсорсную разработку называющиеся Docker. С функциональной точки зрения это метод запаковать код приложения в подобие цифрового контейнера для переправки между компьютерами либо виртуальными автомобилями. И это, согласно точки зрения Лукаса, способно дать бизнесу сходу две главных возможности. Первая — кастомизация облачного ответа, вторая — возможность на лету перемещать разработки в собственное облако либо ЦОД”.

Вот именно на Docker хотелось бы посмотреть чуть внимательнее, тем более что он на данный момент в стадии активной разработки и всегда мелькает в профильных источниках новостей, обрастая всё новыми и новыми функциями, совместимостями, возможностями. красота и Простота данной технологии поразит всякого, кто занимается разработкой либо по долгу работы так или иначе пересекается с развёртыванием разных приложений в тучах.

По солидному счёту Docker — это не более чем «движок», что автоматизирует процесс развёртывания приложения, упаковывая код в контейнер, могущий быть запущен как программа фактически в любой среде. Как утверждают разработчики, Docker способен инкапсулировать любой код и запустить его на любом сервере. Контейнер, что разработчик тестирует на своём ноутбуке, возможно запущен в продакшене, на виртуальной машине, на сервере, в OpenStack-кластере, публичных инстансах и без того потом. По статистике применения Docker на GitHub, самые популярные методы внедрения данной технологии таковы: развёртывания приложений и автоматизация упаковки, создание лёгких и частных PaaS, непрерывная интеграция и автоматическое тестирование приложений, масштабирование и развёртывание веб-приложений, баз данных и бэкенд-сервисов.

Какую главную проблему решает Docker? Как пишут сами разработчики, эта разработка разрешает устранить то, что именуется «dependency hell». В переводе с языка Шекспира на язык Пушкина это практически свидетельствует, что Docker ликвидирует неразбериху, появляющуюся при громадном количестве зависимостей и компонентов между ними. Представьте, что у вас имеется множество, условно говоря, софтверных компонентов: пользовательская база данных, ваша база данных, веб-фронтенд, API, комплекты статичного кода, статичный сайт и без того потом. Все эти взаимосвязанные составляющие необходимо уместить в среде «металлических компонентов», среди которых виртуальные автомобили, QA-серверы, дата-центры, публичные тучи, продакшен-кластер, пользовательские компьютеры. С позиций совместимости всё это — ужас и полнейший кошмар. Добавим ко мне и тот факт, что приложение должно не только трудиться в различных средах, но и вольно мигрировать между ними.

Это приблизительно то же самое, что управление складом и перемещение грузов. Предположим, что у нас имеется автомобиль, бочки с вином, бочки с горючим, рояль, мешки с кофе, сервер, ящик со специями. И громадное разнообразие инструментов для перемещения и складирования: складские стеллажи, поезда, подъёмные краны, мобильные погрузчики, суда, грузовики с фургонами. Появляется вопрос: как именно всё это возможно оптимально уместить, складировать и перемещать, включая перемещения между разными видами транспорта? Получается такое же уравнение со всеми малоизвестными, какое у нас вышло при попытке обоюдной интеграции софтверных и металлических компонентов абзацем выше.

Но мы так как пользуемся любимым приёмом магистров ТРИЗ — перемещаем проблему в другой контекст, решаем её и при помощи аналогии переводим обратно. Так, чтобы решить проблему с перемещением разнообразных грузов, нам нужен… обычный контейнер! Контейнер, в который возможно поместить и упаковать каждые товары; наряду с этим он будет запечатан, пока не достигнет пункта назначения. В ходе перемещения из точки А в точку B он может перемещаться на различных видах транспорта, поскольку стандартные размеры предполагают универсальные условия перевозки. Согласно данным статистики 90% всех грузов в мире сейчас доставляются в стандартных 40-футовых контейнерах. Это нехитрое изобретение в своё время произвело чуть ли не революцию в логистике: реже пропадают и портятся товары, меньше времени уходит на разгрузку и погрузку. Ежегодно сейчас доставляется не меньше 200 миллионов контейнеров в мире. Простите мне это логистическое отступление, но в случае если это замечательно функционирует в физическом мире, то из-за чего бы такой же технологии не сработать в мире виртуальном?

По всей видимости, разработчики Docker поразмыслили совершенно верно кроме этого. Поразмыслили и создали движок, что разрешает упаковать каждые компоненты в лёгкий, портативный, транспортабельный контейнер, талантливый запускаться и трудиться фактически на любой «металлической» платформе. Получается обстановка win-win для операторов и разработчиков. Первые смогут, в один раз создав приложение, запускать его где угодно. Вторые, в один раз сконфигурировав инфраструктуру, – запускать на ней какие конкретно угодно приложения: пресловутый «dependency hell» устраняется так раз и окончательно.

Контейнерная разработка, которая в скором будущем точно соберёт популярность, ответственна вследствие того что она в полной мере может оказать такое же экономическое действие на рынок туч и виртуальных автомобилей, какое оказали 40-футовые контейнеры на логистический рынок. Docker разрешает запускать приложения в изолированных контейнерах, каковые, однако, дробят между собой библиотеки и операционную систему. Следовательно, нет необходимости выделять по виртуальному серверу на каждое приложение. Docker как бы нарезает на кусочки виртуальную машину, дробит её на множество контейнеров, и это разрешает очень сильно сэкономить на вычислительных мощностях – легко за счёт оптимизированного распределения ресурсов. Эффективность применения виртуальных автомобилей, так, очень сильно возрастает. Возможно, как раз исходя из этого так много занимательных продуктов, базирующихся на Docker, показалось сейчас. На мой взор, самый интересные из них – представители опенсорсного сообщества: это PaaS-платформа Dokku и проект BYO SaaS, что разрешает развернуть собственное SaaS-ответ всем желающим. Словом, разработка оказалась очень многообещающей. Посмотрим, как сообщество Open Source разовьёт идею.

Docker соединение контейнеров между собой | уроки docker | #5


Похожие статьи: