Docker хостинг

02.03.20255 minute(s)

Рассмотрим каким должен быть удобный хостинг Docker контейнеров сегодня. А также познакомимся с новым недорогим хостингом для Docker контейнеров в России.

Здравствуйте, добро пожаловать в блог компании Контейнерный хостинг. Меня зовут Сергей Кольмиллер, я создатель данного сервиса. В этой статье я расскажу про хостинг Docker контейнеров. Для чего это нужно, как это использовать и какие услуги мы можем предложить вам для размещения ваших контейнеров в сети.

Что такое докер хостинг

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

Чем докер хостинг отличается от выделенного сервера

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

Такое различие в способе загрузки операционной системы даёт определенные преимущества, но и преподносит ряд недостатков. Ниже в таблице мы разберём преимущества и недостатки виртуальной машины и докер контейнера.

Виртуальная машина Докер контейнер
Ядро ОСВыделенное Общее
Системные вызовыДоступны всеНекоторые недоступны
Постоянное хранилищеИмеетсяНет (только через подключение томов)
Доступ извнеПо выделенному IP адресуПо доменному имени
Потребление ресурсовОпеационная система и запущенные приложенияТолько запущенные приложения

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

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

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

Преимущества Докер хостинга

  1. Легковесность: Контейнеры Docker используют ядро хост-операционной системы, что делает их значительно более легковесными по сравнению с виртуальными машинами, которые требуют полного экземпляра операционной системы. Это позволяет запускать больше контейнеров на одном хосте, чем виртуальных машин.
  2. Портативность: Контейнеры Docker могут быть легко перемещены между различными средами (например, локальная машина, облако, серверы), так как они содержат все необходимые зависимости и конфигурации.
  3. Управление зависимостями: Docker позволяет упаковывать приложения и их зависимости в один контейнер, что устраняет проблемы с несовместимостью и конфликтами версий.

Портативность и управление зависимостями

Использование Докер контейнеров, в настоящее время, является практически стандартом в области разработки и развертывания приложений в сети. Благодаря подходу “инфраструктура в виде кода”, разработчики не беспокоятся как их приложение запустится на удаленном сервере. Срабатывает принцип репродуцируемости, то есть, – если это сработало в докере на локальной машине, значит должно также работать и на удаленном сервере. Без использования контейнеризации такого эффекта не всегда можно достичь. Причина этого в том, что виртуальные машины не держат для каждого приложения отдельную, это накладно по ресурсам, как уже говорилось ранее.

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

Это когда приложения А и Б оба зависят от библиотеки М, но текущая версия А работает со второй версией библиотеки, а Б с первой версией. В таком случае, не обойтись без опытного девопса который разрулит этот конфликт через установку разных версий библиотеки М и настройки в одном из приложений нестандартного пути библиотеки. А таких проблем может быть множество, и такие решения, делающиеся в ручном режиме, не решают проблему кардинально, а лишь временно подставляют “костыль”.

В Докер контейнере таких костылей нет, потому что каждое приложение запущено в отдельном образе ОС с минимальным набором зависимостей.

Докер на виртуальной машине

Чтобы получить все преимущества от использования Докер контейнеров нужно арендовать виртуальную машину с установленным Docker или просто виртуальную машину и самому установить туда Docker. Однако, если нужно запустить всего одно небольшое приложение, то такой подход может оказаться расточительным. Потому что, во первых, вы будете оплачивать работу ядра ОС, а во вторых, установить Докер на минимальную виртуальную машину не получится, так как для нормальной работы Докеру необходимо не менее 2ГБ ОЗУ. Таким образом, чтобы запустить сервис, которому нужно каких нибудь 256МБ памяти придется оплачивать в восемь раз больше.

Сервисы запущенные на Контейнерном хостинге показывают потребление используемых ресурсов, которое создаёт только работа приложения клиента.

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

Файл docker-compose.yaml

Прт работе с Docker обычно все используют настройку в docker-compose.yaml файле, это позволяет хранить инфраструктуру как код. Но можно ли использовать этот файл в хостинге докер контейнеров?

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

  • Не отправляет файлы по сети: компос файл ожидает запуска докер на локальной машине.
  • Не монтирует тома по сети: volumes не могут быть смонтированы как обычно.
  • Порты могут быть зарыты: указанные в компос файле порты могут быть заняты или закрыты на сервисе.

Поэтому непосредственного использования готового docker-compose.yaml файла на docker хостинге быть не может. Однако мы в Контейнерном хостинге постарались и аналогичный файл конфигурации у нас максимально похож на файл компос с оговорками которые описаны выше. Полная информация о файле содержится в документации.

Docker хостинг