← Все статьи
Читать на:

Установка Docker на VPS: пошаговое руководство для веб-приложений

Установка Docker на VPS: пошаговое руководство для веб-приложений

Docker стал стандартом де-факто для упаковки и запуска веб-приложений. Он позволяет изолировать сервисы, упростить деплой и избавиться от проблемы «у меня работает, а на сервере нет». VPS-сервер — идеальная среда для Docker: вы получаете полный root-доступ, выбираете операционную систему и управляете ресурсами без ограничений, характерных для виртуального хостинга. В этой статье разберём, как установить Docker на VPS под управлением Ubuntu и запустить первое веб-приложение.

Почему VPS лучше подходит для Docker, чем обычный хостинг

Shared-хостинг не даёт доступа к ядру операционной системы, а Docker требует именно его — для управления пространствами имён и контрольными группами. На VPS вы работаете с выделенными ресурсами и полным контролем над системой. Это означает возможность установить любую версию Docker Engine, использовать Docker Compose и настраивать сетевые мосты под нужды вашего стека. При выборе тарифа в NodexGo стоит обратить внимание на объём оперативной памяти: для большинства веб-приложений с несколькими контейнерами достаточно от 2 ГБ, но чем сложнее стек, тем больше памяти потребуется.

Подготовка сервера перед установкой

После получения доступа к VPS первым делом обновите пакеты системы командой apt update && apt upgrade -y. Убедитесь, что на сервере установлен curl и утилита gnupg — они понадобятся для добавления официального репозитория Docker. Также рекомендуется сразу создать непривилегированного пользователя и добавить его в группу sudo, чтобы не работать постоянно от root. Это базовая практика безопасности, которая актуальна независимо от того, какой софт вы планируете запускать.

Установка Docker Engine на Ubuntu

Официальный способ установки Docker предполагает подключение фирменного репозитория компании Docker Inc. Сначала добавьте GPG-ключ репозитория: curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg. Затем добавьте сам репозиторий в sources.list и выполните apt update && apt install docker-ce docker-ce-cli containerd.io. После установки проверьте работоспособность командой docker run hello-world — если контейнер запустился и вывел приветствие, всё настроено правильно. Не забудьте добавить своего пользователя в группу docker командой usermod -aG docker $USER, чтобы не использовать sudo при каждом вызове Docker.

Установка Docker Compose и первый запуск приложения

Docker Compose позволяет описывать многоконтейнерные приложения в одном файле docker-compose.yml и запускать весь стек одной командой. Начиная с версии Docker 20.10 плагин Compose входит в состав Docker CLI и устанавливается вместе с ним — проверьте наличие командой docker compose version. Для типичного веб-приложения файл Compose будет содержать как минимум два сервиса: само приложение и базу данных. Команда docker compose up -d запустит все контейнеры в фоновом режиме, а docker compose logs позволит следить за их выводом.

Пример минимального docker-compose.yml для приложения на Node.js с PostgreSQL выглядит так: описываете сервис app с указанием образа или пути к Dockerfile, задаёте переменные окружения через env_file, указываете зависимость от сервиса db. Для сервиса db используете официальный образ postgres, задаёте переменные POSTGRES_USER, POSTGRES_PASSWORD и POSTGRES_DB, а данные монтируете в named volume, чтобы они сохранялись между перезапусками контейнера.

Настройка обратного прокси и HTTPS

Для production-среды контейнеры не стоит открывать напрямую в интернет. Правильная практика — поставить перед ними обратный прокси, например Nginx или Traefik, который будет принимать входящие соединения на портах 80 и 443 и перенаправлять трафик к нужному контейнеру. Traefik особенно удобен в связке с Docker: он автоматически обнаруживает контейнеры через Docker API и настраивает маршрутизацию на основе меток в docker-compose.yml. Для получения TLS-сертификатов Let's Encrypt Traefik имеет встроенную поддержку ACME-протокола — достаточно указать email и включить соответствующий резолвер.

Советы по безопасности и производительности

Никогда не запускайте контейнеры с флагом --privileged без крайней необходимости — это даёт контейнеру почти полный доступ к хосту. Ограничивайте ресурсы контейнеров через параметры mem_limit и cpus в Compose-файле, чтобы один сервис не мог «съесть» всю память VPS. Регулярно обновляйте базовые образы и сканируйте их на уязвимости с помощью docker scout или Trivy. Логи контейнеров по умолчанию хранятся на хосте и могут занять значительное место — настройте ротацию через параметр logging в Compose или глобально в /etc/docker/daemon.json.

Если вы планируете развернуть несколько проектов на одном VPS, используйте отдельные Docker-сети для каждого стека — это изолирует сервисы и предотвращает случайное взаимодействие между проектами. Мониторинг контейнеров удобно вести через связку cAdvisor и Prometheus: они дают детальную статистику по CPU, памяти и сети для каждого контейнера.

Заключение

Docker на VPS — это гибкость, воспроизводимость и простота масштабирования для любых веб-проектов. Правильно настроенный стек из Docker Compose, обратного прокси и автоматических сертификатов превращает сервер в надёжную платформу для деплоя приложений любой сложности. Если вы ищете VPS с полным root-доступом, стабильной сетью и возможностью выбрать подходящую конфигурацию под свой стек, рассмотрите предложения NodexGo — арендуйте сервер, установите Docker по этому руководству и запустите своё приложение уже сегодня.