Wiki · Технологии разработки
Docker
Docker – это платформа, которая упаковывает приложение вместе со всем, что ему нужно для работы, в контейнер. Такой контейнер одинаково запускается на ноутбуке разработчика, на тестовом и на рабочем сервере.
Знакомая ситуация: подрядчик сдаёт доработку, на тестовой копии всё работает, а после выкладки на боевой сайт ломается форма заказа. Причина часто банальная: на сервере другая версия PHP или не установлено нужное расширение. Docker закрывает этот класс ошибок. Окружение описывают один раз в файле, и дальше оно собирается одинаково везде.
Docker развивает компания Docker, Inc. Публично его впервые показали 15 марта 2013 года на конференции PyCon. Движок Docker Engine открытый, его код развивается в проекте Moby, а изоляцию контейнеров дают механизмы ядра Linux.
Образ, контейнер и реестр
В Docker три основных понятия.
- Образ (image). Шаблон только для чтения: минимальная операционная система, PHP нужной версии, расширения, код сайта. Его собирают по инструкции из файла Dockerfile.
- Контейнер. Запущенный экземпляр образа. Из одного образа запускают сколько угодно одинаковых контейнеров.
- Реестр. Хранилище готовых образов. Самый известный публичный реестр называется Docker Hub, свой частный можно завести, например, в GitLab или Yandex Cloud.
Dockerfile для простого PHP-сайта занимает несколько строк:
FROM php:8.2-apache RUN docker-php-ext-install pdo_mysql COPY . /var/www/html/
Первая строка берёт готовый образ с PHP 8.2 и веб-сервером Apache, вторая добавляет расширение для работы с MySQL, третья копирует файлы сайта. Файл лежит в репозитории рядом с кодом, и окружение не приходится восстанавливать по памяти администратора.
Обратите внимание на тег php:8.2-apache: версия указана точно. С тегом latest через полгода сборка подтянет другой PHP, и сайт сломается так же, как без Docker. Пароли и ключи доступа в Dockerfile тоже не пишут: они попадают в образ и расходятся вместе с ним.

Контейнер и виртуальная машина
Виртуальная машина везёт с собой целую операционную систему со своим ядром. Контейнеры на одном сервере делят общее ядро и при этом изолированы друг от друга. Поэтому контейнер запускается за секунды и тратит меньше ресурсов.
| Контейнер Docker | Виртуальная машина | Установка прямо на сервер | |
|---|---|---|---|
| Что внутри | Приложение и его зависимости | Полная ОС со своим ядром | Всё ставится в систему сервера |
| Запуск | Секунды | Дольше, грузится вся ОС | Сайт работает постоянно |
| Для каких задач | Проекты из нескольких сервисов, частые выкладки, одинаковые среды | Разные ОС на одном железе, сильная изоляция | Небольшой сайт на CMS, готовое окружение хостинга |
На обычном виртуальном хостинге Docker, как правило, не запустить: нужен VPS или выделенный сервер. Про виды хостинга подробно в статье Хостинг. Лендингу или небольшому сайту на CMS контейнеры часто не нужны вовсе: ему хватит обычного хостинга с подходящими версиями PHP и базы.
Docker Compose: когда контейнеров несколько
Сайт редко состоит из одного сервиса. Обычно это веб-сервер, PHP, база данных, иногда Redis для кеша. Docker Compose описывает всю связку в одном файле compose.yaml и поднимает её одной командой:
docker compose up -d
Новый человек в команде запускает проект у себя за минуты, а не за день настройки. Для вас это значит, что проект меньше зависит от одного конкретного специалиста.
Базу данных и загруженные пользователями файлы в такой связке выносят в тома (volumes), которые живут отдельно от контейнеров. Всё, что записано только внутрь контейнера, пропадёт при его пересоздании.
Что Docker меняет в поддержке сайта
- Тестовая и рабочая версии собираются из одного описания, ошибок «у меня работало» меньше.
- Переезд на другой сервер проще: переносят образы, данные и файл с настройками.
- Неудачное обновление откатывают запуском прошлой версии образа.
- Нужен специалист, который понимает Docker. Если подрядчик уйдёт, без такого человека поддерживать проект будет трудно.
- Образы тоже надо обновлять: в старых базовых образах находят уязвимости.
Сколько стоит Docker и где держать образы
Docker Engine, который работает на сервере, распространяется как открытое ПО. Docker Desktop, программа для компьютеров разработчиков, на октябрь 2026 года бесплатна для личного использования, обучения и компаний, где меньше 250 сотрудников и годовая выручка меньше 10 млн долларов. Крупной компании нужна платная подписка. Условия доступа к Docker Hub для России уточняйте у Docker, а образы проекта надёжнее держать в своём реестре.
Docker и 1С-Битрикс
Для сайтов на 1С-Битрикс долго стандартом было готовое окружение BitrixVM. В июне 2025 года «1С-Битрикс» выпустила официальный репозиторий с контейнерами для своих продуктов, так что у платформы появился и официальный путь через Docker.
BitrixVM при этом никуда не делась. Её ставят на чистый VPS, по документации на октябрь 2026 года подходят CentOS Stream 9, Rocky Linux 9, AlmaLinux 9 и Oracle Linux 9. Если остальные проекты команды уже живут в контейнерах, официальный вариант через Docker избавит от второго способа администрирования.
Как узнать, использует ли проект Docker
Загляните в репозиторий проекта (что это такое, рассказываем в статье про Git). Если в корне лежат файлы Dockerfile, compose.yaml или docker-compose.yml, проект собран в контейнерах. На сервере это покажет команда docker ps: она выводит список запущенных контейнеров. Проще всего спросить подрядчика.

Если проект уже работает на Docker, берём его на доработку и техническую поддержку. Новый проект можно заказать в разделе Разработка сайтов.
Установка, запуск, данные и пароли в Docker
Как установить Docker на компьютер и на сервер?
На Windows и macOS ставят Docker Desktop, на Windows он работает поверх WSL 2. На Linux-сервер, например с Ubuntu, устанавливают Docker Engine из официального репозитория Docker по инструкции для своего дистрибутива. Перед установкой Desktop в компании сверьтесь с условиями лицензии: бесплатна она не для всех.
Как запустить контейнер или весь проект из compose.yaml?
Один контейнер запускают командой docker run с именем образа. Проект из нескольких сервисов поднимают в папке с compose.yaml командой docker compose up, ключ -d оставляет его работать в фоне. Убедиться, что всё поднялось, поможет docker ps.
Где Docker хранит образы, контейнеры и данные томов?
На Linux-сервере всё лежит в /var/lib/docker, тома в подпапке volumes. Править файлы там вручную не стоит, а в резервную копию тома включают обязательно: в них база и загрузки сайта. Docker Desktop на Windows и Mac держит те же данные внутри своей виртуальной машины.
Как посмотреть логи контейнера?
Командой docker logs с именем контейнера, а с ключом -f вывод будет обновляться в реальном времени. Для всех сервисов из compose.yaml сразу есть docker compose logs.
Как обновить Docker и образы проекта?
Сам Docker Engine на сервере обновляют пакетным менеджером системы, как любую программу. С образом иначе: меняют версию в Dockerfile или compose.yaml, пересобирают и пересоздают контейнер. Данные в томах при этом сохраняются, а прошлый образ оставляют, чтобы при проблеме быстро вернуться назад.
Чем Docker отличается от Kubernetes?
Docker собирает образы и запускает контейнеры на одной машине. Kubernetes управляет контейнерами на многих серверах: раскладывает нагрузку, перезапускает упавшие, добавляет копии при росте трафика. Обычному сайту хватает Docker с Compose, Kubernetes нужен крупным системам из множества сервисов.
Зачем Docker, если сайт и так работает на хостинге?
Чтобы окружение перестало быть тайной одного администратора. Версии PHP, расширения и настройки записаны в файле и одинаково собираются у разработчика, на тесте и на боевом сервере, а переезд сводится к переносу образов и данных. Если же над сайтом работает один человек и выкладки редкие, обычный хостинг проще и дешевле в поддержке.
Где хранить пароли от базы, если не в Dockerfile?
Передавать при запуске через переменные окружения. В Compose их удобно держать в файле .env рядом с compose.yaml, но сам файл в репозиторий не кладут, там лежит только пример без значений. Для особо чувствительных ключей у Compose есть секреты, которые не попадают в образ.
Почему после пересоздания контейнера пропали загруженные файлы?
Их записали внутрь контейнера, а не в том. Новый экземпляр создаётся из образа чистым, и всё накопленное в старом уходит вместе с ним. Папку загрузок и базу подключают как тома или выносят на отдельный сервер, тогда пересоздание проходит без потерь.
Чем Docker Desktop отличается от Docker Engine?
Engine это сам движок, который запускает контейнеры, он открытый и работает на серверах, обычно под Linux. Desktop это программа для компьютеров разработчиков с графическим интерфейсом, внутри неё тот же движок в небольшой виртуальной машине. Ограничения лицензии касаются именно Desktop.
Документация Docker и новость 1С-Битрикс
- Docker Docs: What is Docker?
- Docker Docs: What is a container?
- Docker Docs: Docker Desktop license agreement
- Блог Docker: Docker: Nine Years YOUNG
- 1С-Битрикс: новость «Продукты 1С-Битрикс теперь можно запустить в докер-контейнерах»
Остались вопросы по теме «Docker»?
Напишите нам в Telegram или MAX. Ответит специалист, который отвечает за эту тему, или руководитель проектов в рабочее время.
Отвечает по темеСергей ЧерняковWeb-разработчикНад статьёй работали
Услуги
Услуги по теме
Посчитайте стоимость проекта за 2 минуты
Калькулятор соберёт смету по нашим тарифам: сайт, дизайн, интеграции и поддержка.
