SERVERRADARHosting Telemetry
Практические гайды
Чтение: 6 мин
Обновлено: 2026-09-28

Развертывание Docker и Compose на VDS: безопасность и мониторинг 2026

Экспертное руководство по запуску Docker и Docker Compose на VDS в 2026 году. Системные требования к RAM и CPU, изоляция портов, готовый docker-compose.yml и таблица провайдеров.

Александр Новиков
Senior DevOps Architect ServerRadar

Рекомендованные серверы под эту задачу

Все серверы
Timeweb Cloud4.9Топ выбор
Проверено ботом

Про NVMe (Для сайтов)

#web_sites#docker#lamp
CPU
4 vCPU
3.3 GHz
RAM
4 GB
Диск
60 GB
NVMe
Сеть
200 M
IPv4+6
GB6: 1150 pts
fio: 45k IOPS
Цена в месяц:
712 ₽890 ₽
Почасово:
1.24 ₽/час
Заказать на сайте хостера
AdminVPS4.8
Проверено ботом

AdminVPS Promo (Финляндия / Германия / Нидерланды)

#vpn#vless#wireguard
CPU
1 vCPU
3.5 GHz
RAM
2 GB
Диск
15 GB
NVMe
Сеть
200 M
IPv4+6
GB6: 1480 pts
fio: 54k IOPS
Цена в месяц:
424 ₽499 ₽
Почасово:
0.69 ₽/час
Код:radar26(-15%)
Заказать на сайте хостера
FirstVDS4.7
Проверено ботом

VDS Разгон

#web_sites#docker#cms
CPU
2 vCPU
3.2 GHz
RAM
2 GB
Диск
40 GB
NVMe
Сеть
100 M
IPv4+6
GB6: 1050 pts
fio: 38k IOPS
Цена в месяц:
416 ₽489 ₽
Почасово:
0.68 ₽/час
Код:6481233606(-15%)
Заказать на сайте хостера

Развертывание Docker и Compose на VDS: безопасность и мониторинг 2026

1. Быстрый ответ / Резюме

Для стабильной работы Docker на VDS в 2026 году требуется сервер с аппаратной KVM-виртуализацией, минимум 2 vCPU, 4 ГБ RAM и быстрым NVMe-диском. Виртуализация OpenVZ категорически не подходит из-за общего ядра хоста и ограничений cgroups v2. Оптимальная конфигурация демона включает изоляцию iptables, ограничение размера логов до 50 МБ и запуск контейнеров от непривилегированного пользователя.

2. Сравнительная таблица рекомендуемых VDS под Docker (2026)

Для контейнеризации первостепенное значение имеют прямой доступ к cgroups v2, аппаратная виртуализация KVM и высокоскоростная дисковая подсистема NVMe. В таблице представлены проверенные провайдеры с гарантированными ресурсами.

Провайдер Стоимость от Процессор ОЗУ Диск NVMe fio Read IOPS Промокод / Бонус Ссылка
Timeweb Cloud 149 ₽/мес 1 vCPU (3.3 ГГц) 1 ГБ 15 ГБ NVMe 55 000 Авто-скидка по ссылке (до 38%) Перейти
Aeza 290 ₽/мес 1 vCPU Ryzen 9 (4.8 ГГц) 2 ГБ 30 ГБ NVMe 62 000 +15% к балансу (Бонус +15%) Перейти
FirstVDS 239 ₽/мес 1 vCPU (3.4 ГГц) 1 ГБ 20 ГБ NVMe 50 000 6481233606 (Скидка 25%) Перейти
Beget 210 ₽/мес 1 vCPU (3.4 ГГц) 1 ГБ 10 ГБ NVMe 52 000 Тест 30 дней (Бесплатно 30 дн.) Перейти

3. Системные требования и архитектура контейнеризации

Современный стек микросервисов предъявляет жесткие требования к архитектуре ядра Linux и оперативной памяти сервера:

  • Тип виртуализации: Исключительно KVM (Kernel-based Virtual Machine) или физический Bare Metal. Контейнерная виртуализация OpenVZ и LXC делит ядро с операционной системой хоста, что приводит к критическим сбоям при монтировании overlay2, фильтрации трафика через iptables и запуске Docker in Docker.
  • Процессор (vCPU): Минимум 2 вычислительных ядра с тактовой частотой от 3.2 ГГц. Сборка образов, запуск компиляторов и обработка очередей сообщений кратковременно утилизируют до 100% одного ядра.
  • Оперативная память (RAM):
    • 1–2 ГБ: Подходит только для 1–2 легковесных контейнеров (например, Nginx + статический фронтенд + Telegram-бот на Python).
    • 4 ГБ: Стандартный производственный минимум для микросервисного стека (Nginx Proxy Manager, Node.js API, PostgreSQL 16, Redis).
    • 8+ ГБ: Рекомендуется для сред с системами мониторинга (Prometheus + Grafana), очередей RabbitMQ/Kafka или CI/CD раннеров (GitLab Runner).
  • Дисковая подсистема: Строго NVMe SSD. Слой OverlayFS активно создает метаданные и временные слои при каждом старте контейнера. Обычные SATA SSD быстро упираются в очередь ожидания ввода-вывода (I/O Wait > 20%).

4. Пошаговое руководство по установке и безопасной настройке Docker

Выполните развертывание официального репозитория Docker CE на чистой ОС Ubuntu 22.04 или 24.04 LTS:

Шаг 1. Очистка устаревших пакетов и обновление системы

sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get remove docker docker-engine docker.io containerd runc -y
sudo apt-get install ca-certificates curl gnupg lsb-release -y

Шаг 2. Подключение официального GPG ключа и репозитория

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

Шаг 3. Тюнинг демона /etc/docker/daemon.json для защиты от переполнения диска

По умолчанию Docker хранит бесконечные JSON-логи, которые за несколько недель забивают диск VDS. Создайте конфигурацию:

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "50m",
    "max-file": "3"
  },
  "live-restore": true,
  "userland-proxy": false,
  "no-new-privileges": true
}

Примените параметры:

sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl enable docker

5. Готовый production docker-compose.yml для микросервисного стека

Пример изолированного стека с автоматическим перезапуском и ограничением по ресурсам:

version: '3.8'

services:
  reverse-proxy:
    image: nginx:alpine
    container_name: production_proxy
    restart: always
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
      - ./certbot/conf:/etc/letsencrypt:ro
    networks:
      - web_net
    deploy:
      resources:
        limits:
          cpus: '0.50'
          memory: 256M

  postgres-db:
    image: postgres:16-alpine
    container_name: production_db
    restart: always
    environment:
      POSTGRES_DB: app_production
      POSTGRES_USER: db_admin
      POSTGRES_PASSWORD_FILE: /run/secrets/db_password
    volumes:
      - pgdata:/var/lib/postgresql/data
    networks:
      - internal_net
    deploy:
      resources:
        limits:
          cpus: '1.00'
          memory: 1024M

networks:
  web_net:
    driver: bridge
  internal_net:
    internal: true

volumes:
  pgdata:

6. Мониторинг контейнеров и базовая безопасность

Для предотвращения падений контейнеров от нехватки памяти (OOM-killer) настройте базовый мониторинг:

# Установка и запуск легковесного мониторинга ресурсов cAdvisor
docker run -d \
  --name=cadvisor \
  --restart=always \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:ro \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --publish=8080:8080 \
  gcr.io/cadvisor/cadvisor:latest

Чек-лист безопасности production VDS:

  • Запретите доступ к Docker socket /var/run/docker.sock для непривилегированных контейнеров.
  • Всегда задавайте лимиты памяти в блоке deploy.resources.limits.memory. При превышении лимита система перезапустит только сбойный контейнер, сохранив работоспособность хоста.
  • Отключите автоматический проброс портов наружу через Docker iptables, если используется UFW фаервол.

7. Решение частых проблем и диагностика

  1. Docker перезаписывает правила UFW / iptables:
    • Проблема: Публикация портов ports: - "5432:5432" открывает порт наружу всему интернету, минуя стандартный фаервол UFW.
    • Решение: Привязывайте локальные порты сервисов к петлевому интерфейсу: 127.0.0.1:5432:5432 или используйте internal docker networks.
  2. Нехватка дескрипторов файлов (Too many open files):
    • Добавьте в /etc/security/limits.conf строчки: * soft nofile 65536 и * hard nofile 65536.
  3. Зависание I/O при создании снапшотов:
    • Проверьте утилитой iotop -o. Если IOPS упирается в полку провайдера, мигрируйте на VDS с выделенными NVMe (тарифы Timeweb Cloud или Aeza).

8. Часто задаваемые вопросы (FAQ)

Почему Docker нельзя запускать на VDS с OpenVZ?

OpenVZ использует общее ядро хост-машины, что блокирует загрузку модулей ядра overlay2, br_netfilter и работу современных версий Docker Engine с cgroups v2. Для Docker подходит исключительно аппаратная виртуализация KVM.

Сколько оперативной памяти (RAM) нужно под Docker Compose стек?

Сам демон Docker потребляет около 80–120 МБ RAM. Минимальный рабочий веб-стек (Nginx, Node.js/Python, PostgreSQL 16 и Redis) требует от 2 до 4 ГБ RAM с обязательным подключением swap-файла на NVMe.

Как предотвратить переполнение диска логами контейнеров?

В файле /etc/docker/daemon.json необходимо прописать log-driver 'json-file' с параметрами max-size '50m' и max-file '3', после чего перезапустить docker через systemctl reload docker.

Какой VDS провайдер лучше всего подходит для Docker в РФ?

Лидерами являются Timeweb Cloud (предустановленный образ Docker в маркетплейсе, быстрый NVMe, почасовая оплата) и Aeza (высокочастотные ядра AMD Ryzen до 4.8 ГГц и базовый Anti-DDoS).

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

Почему Docker нельзя запускать на VDS с OpenVZ?

OpenVZ использует общее ядро хост-машины, что блокирует загрузку модулей ядра overlay2, br_netfilter и работу современных версий Docker Engine с cgroups v2. Для Docker подходит исключительно аппаратная виртуализация KVM.

Сколько оперативной памяти (RAM) нужно под Docker Compose стек?

Сам демон Docker потребляет около 80–120 МБ RAM. Минимальный рабочий веб-стек (Nginx, Node.js/Python, PostgreSQL 16 и Redis) требует от 2 до 4 ГБ RAM с обязательным подключением swap-файла на NVMe.

Как предотвратить переполнение диска логами контейнеров?

В файле /etc/docker/daemon.json необходимо прописать log-driver 'json-file' с параметрами max-size '50m' и max-file '3', после чего перезапустить docker через systemctl reload docker.

Какой VDS провайдер лучше всего подходит для Docker в РФ?

Лидерами являются Timeweb Cloud (предустановленный образ Docker в маркетплейсе, быстрый NVMe, почасовая оплата) и Aeza (высокочастотные ядра AMD Ryzen до 4.8 ГГц и базовый Anti-DDoS).