Loading...

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

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

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

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

Обыденная аналогия: образы и контейнеры

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

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

Файлы compose и сколько Docker вам на самом деле нужно

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

Часто вам нужно меньше, чем вы ожидаете. Если вы используете 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 и получите веб-сервер, воркер, базу данных и кеш, работающие вместе за один шаг.

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

Трудно ли изучить Docker?

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

Можно ли использовать платформу без Docker?

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

Можно ли собрать образ прямо на CDN.com.tr?

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