Введение в контейнерную виртуализацию Docker

Вы работали с виртуальными машинами? Oracle VM VirtualBox, например? VirtualBox — это гипервизорная виртуализация, т.е. вы под основной ОС запускаете несколько программных эмуляций железа, на которых крутятся произвольные «гостевые» ОС (Linux, Windows, Mac OS, FreeBSD, вообще любые другие).

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

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

Минусы в том, что ты можешь запускать только ОС которые могут работать с одним и тем же ядром (например RedHat и Debian или Ubuntu). К тому же изоляция не такая абсолютная как в гипервизорной виртуализации, т.е. если один хост словил панику ядра — лежат все.

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

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

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

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

В общем, интересная штука, которая может быть полезна многим.

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

Ваш адрес email не будет опубликован.