Loading...
Основы · 7 мин чтения

Что такое Docker (и нужен ли он мне)?

Docker — это способ упаковать приложение вместе со всем, что ему нужно для работы — кодом, средой выполнения, библиотеками и настройками — в единый переносимый блок, называемый контейнером. Контейнер ведёт себя одинаково на вашем ноутбуке, на машине коллеги и на CDN.com.tr. Чтобы получить выгоду, не обязательно быть экспертом по Docker: часто достаточно указать нам готовый образ.

Что такое Docker (и нужен ли он мне)?

Бытовая аналогия

Представьте морской контейнер. Что бы вы в него ни положили, у него стандартная форма, поэтому любой корабль, грузовик или кран может его перевезти, не вникая в содержимое. Контейнер Docker делает то же самое для ПО: он оборачивает ваше приложение и его зависимости в стандартный пакет, чтобы любая совместимая система запускала его одинаково — без сюрпризов вроде «у меня на машине работает».

Образ против контейнера

Большую часть путаницы вызывают два термина. «Образ» — это чертёж, замороженный снимок вашего приложения и его окружения. «Контейнер» — живой, работающий экземпляр, созданный из этого образа. Из одного образа можно запустить много контейнеров — так же, как из одного шаблона можно открыть много копий документа. Образы обычно хранятся в «реестре» (например, Docker Hub или приватном) и загружаются по мере необходимости.

Для чего нужен docker-compose

Реальные приложения редко состоят из одной части — у вас может быть веб-приложение, фоновый обработчик, база данных и кэш. Файл docker-compose.yml перечисляет все эти «сервисы» и то, как они соединяются, чтобы весь стек запускался вместе по одному описанию. На CDN.com.tr вы можете импортировать файл compose, и каждый сервис станет управляемым приложением, а базы данных и кэши могут стать управляемыми дополнениями.

Действительно ли вам нужен Docker?

Часто — меньше, чем вы ожидаете. Если у вас WordPress или сайт на PHP, знания Docker вообще не нужны — эти платформы настраиваются щелчками мыши. Docker важен лишь тогда, когда вы хотите запустить пользовательское приложение. Но и тогда у многих приложений уже есть готовый образ, который можно использовать по имени, или файл docker-compose, который можно импортировать, не написав Docker самостоятельно.

Как это работает на CDN.com.tr

Чтобы запустить пользовательское приложение, вы даёте нам образ (например, публичный образ вроде «nginx» или свой из реестра) либо импортируете файл docker-compose. Платформа загружает образ, запускает его, выдаёт URL с автоматическим HTTPS и поддерживает его работоспособность. Переменными окружения, масштабированием и перезапусками вы управляете из панели — без администрирования серверов и без необходимости собирать образы на самой платформе.

Несколько честных ограничений

Платформа запускает ваши контейнеры, но это не место для сборки образов или запуска Docker внутри Docker, и она не открывает «сырые» публичные TCP-порты (публичный доступ — по HTTP(S); внутренний трафик между сервисами остаётся приватным). Для большинства веб-приложений, API, обработчиков и инструментов это именно то, что нужно; для CI-системы, которая собирает образы, вы собирали бы их в другом месте и развёртывали результат здесь.

Когда Docker помогает здесь

Запустить готовый инструмент

Разверните что-то вроде RabbitMQ или Jenkins по имени образа, с постоянным томом, чтобы данные сохранялись после перезапусков.

Опубликовать своё приложение

Соберите образ в своём пайплайне, отправьте его в реестр и запустите здесь с URL и HTTPS.

Принести целый стек

Импортируйте docker-compose.yml и запустите веб, обработчик, базу данных и кэш вместе за один шаг.

Часто задаваемые вопросы

Основы просты: образ — это шаблон, контейнер — запущенная копия. Для работы с CDN.com.tr вы чаще всего просто указываете имя образа или файл compose — писать Docker самостоятельно почти не приходится.

Да. Хостинг WordPress и PHP вообще не требует Docker. Docker нужен только для пользовательских контейнерных приложений.

Из реестра — публичного, как Docker Hub, или приватного с учётными данными, которые вы добавляете в панели. Платформа загружает образ и запускает его.

Нет — платформа запускает образы, но не собирает их (нет Docker-в-Docker). Соберите образ в своём пайплайне или локально, отправьте в реестр, а затем разверните здесь.

Да, если вы включите постоянный том для приложения или используете управляемое дополнение базы данных/Redis для данных с состоянием.