Docker — инструмент контейнеризации: позволяет запаковать приложение со всеми зависимостями в контейнер — изолированный процесс, работающий поверх ядра Linux. Контейнер запускается одинаково на ноутбуке разработчика, CI/CD-сервере и продакшен-VPS. Docker использует cgroups и namespaces ядра Linux для изоляции.
Как работает
Docker-контейнер — не виртуальная машина: он не эмулирует железо и не запускает отдельное ядро. Контейнер — это набор процессов в изолированных namespaces (PID, NET, MNT, UTS) с ограниченными ресурсами через cgroups. Они разделяют ядро хост-системы. Это делает контейнеры значительно легче VM: запуск за 0,1–1 секунду против 10–60 секунд для виртуальных машин.
Docker-образ (image) — слоистая файловая система (UnionFS/overlay2). Каждая инструкция в Dockerfile создаёт новый слой. Слои кешируются — если слой не изменился, Docker использует кеш при повторной сборке. Образы хранятся в Docker Registry (Docker Hub или приватный реестр).
Docker Compose управляет многоконтейнерными приложениями через файл docker-compose.yml: один файл описывает все сервисы (Nginx, PHP-FPM, MySQL, Redis), их зависимости и сети. Запуск всего стека: docker compose up -d.
История
Docker основан Соломоном Хайксом (Solomon Hykes) в компании dotCloud. Первый публичный релиз — март 2013 года на конференции PyCon. Проект стал вирусным: за первые 3 месяца более 75 000 загрузок. В 2014 году выделился в отдельную компанию Docker Inc. В 2017 году Docker передал оркестрацию сообществу через Moby Project. Kubernetes (Google, 2014) стал доминирующей системой оркестрации контейнеров. Docker Desktop для Mac/Windows вышел в 2016 году.
Применение в хостинге
- Изоляция PHP-приложений: каждый сайт в отдельном контейнере без конфликтов зависимостей
- CI/CD: сборка и тестирование в идентичном окружении на любом сервере
- Микросервисы: отдельный контейнер для каждого сервиса с независимым деплоем
- Быстрое развёртывание: готовые образы WordPress, MySQL, Redis из Docker Hub запускаются за минуту
На что обращать внимание
Docker на VPS с OpenVZ-виртуализацией работает с ограничениями (нет cgroups v2, ограниченные namespaces). Для Docker нужен KVM-VPS. Ресурсы: Docker-демон занимает ~100 МБ ОЗУ; каждый контейнер — дополнительно. Безопасность: Docker-сокет (/var/run/docker.sock) — эквивалент root-доступа; монтировать его в контейнеры нужно осторожно.
Docker в хостинге
Docker — стандарт для деплоя приложений на VPS. Образы nginx, PHP-FPM, MySQL, Redis доступны на Docker Hub. Docker Compose позволяет описать весь стек в одном YAML-файле и запустить командой docker compose up -d. Ресурсное ограничение: --memory=512m --cpus=1 — важно на shared-серверах. Docker не заменяет виртуализацию: контейнеры разделяют ядро хоста, поэтому изоляция ниже, чем у полноценной VM. Для управления несколькими серверами с Docker используют Docker registry + CI/CD или Kubernetes/Swarm.