Начало работы с Docker на VPS
Автор: команда ApexVPS • Обновлено: июль 2026 • 8 мин чтения
Запуск Docker на VPS — это самый быстрый способ перейти от пустого Ubuntu-сервера к работающему веб-приложению, базе данных или самостоятельно размещенному сервису за считанные минуты. Вместо борьбы с системными пакетами и конфликтующими зависимостями вы загружаете готовый образ и запускаете контейнер. Это руководство для начинающих проведет вас через установку Docker и Docker Compose на Ubuntu или Debian, основные концепции, которые вам нужно знать, запуск первого контейнера, сохранение данных с помощью томов и несколько базовых аспектов безопасности, чтобы вы не обожглись.
Зачем запускать Docker на VPS?
Виртуальный сервер дает вам полный root-доступ и выделенные ресурсы — именно то, что нужно контейнерам. С установленным Docker вы можете запускать множество изолированных сервисов рядом, не мешая друг другу. Каждый контейнер поставляется со своими библиотеками, поэтому Node-приложение, база данных Postgres и обратный прокси могут сосуществовать на одной машине. Если ваша цель — размещение приложений на VPS — например, личное облако, вики или медиасервер — Docker делает каждый сервис аккуратным и воспроизводимым.
Контейнеры также переносимы. Тот же файл Compose, который работает на вашем ноутбуке, работает и на сервере, что устраняет классическую проблему «работает на моей машине». Пересборка сервиса после ошибки занимает секунды, а не полдня переустановки пакетов.
Основные понятия простыми словами
Прежде чем трогать командную строку, полезно знать четыре строительных блока:
- Образ — шаблон только для чтения, содержащий приложение и все, что ему нужно для запуска. Вы скачиваете образы из реестра, например Docker Hub. Это как снимок или класс.
- Контейнер — работающий экземпляр образа. Вы можете свободно запускать, останавливать и удалять контейнеры. Из одного образа может работать много контейнеров, как объекты, созданные из класса.
- Том — постоянное хранилище, которое находится вне записываемого слоя контейнера. Тома нужны, чтобы сохранять базы данных и загруженные файлы при замене контейнера.
- Сеть — виртуальная сеть, которая позволяет контейнерам общаться друг с другом по имени. Docker автоматически создает сеть для каждого проекта Compose, чтобы ваше приложение могло подключаться к базе данных по понятному хосту.
Шаг 1: Установите Docker на Ubuntu или Debian
Самый простой официально поддерживаемый способ установки Docker Engine — скрипт автоматической установки. Подключитесь к серверу по SSH и выполните:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
Это установит Docker Engine и плагин Compose. Когда установка завершится, проверьте версии:
docker --version
docker compose version
По умолчанию Docker требует sudo. Чтобы запускать его от вашего обычного пользователя, добавьте себя в группу docker, затем выйдите из системы и войдите снова, чтобы изменения вступили в силу:
sudo usermod -aG docker $USER
Docker также автоматически запускается при загрузке системы. Если вам когда-нибудь понадобится включить это вручную:
sudo systemctl enable --now docker
Предпочитаете метод репозитория пакетов или хотите получить полную информацию для вашего дистрибутива? Официальная документация по установке Docker описывает все варианты. Приведенный выше скрипт идеально подходит для свежего VPS.
Шаг 2: Запустите первый контейнер
Проверьте установку с помощью классического образа hello-world:
docker run hello-world
Docker загрузит образ, запустит его один раз и выведет подтверждающее сообщение. Теперь запустим что-нибудь видимое. Эта команда запускает веб-сервер Nginx в фоне и пробрасывает порт 8080 на хосте на порт 80 в контейнере:
docker run -d -p 8080:80 --name web nginx
Откройте http://your-server-ip:8080 в браузере — вы увидите приветственную страницу Nginx. Полезно знать несколько флагов:
-dзапускает контейнер в фоновом режиме.-p 8080:80публикует порт какhost:container.--name webдает контейнеру запоминающееся имя.
Проверьте, что запущено, затем остановите и удалите контейнер, когда закончите:
docker ps
docker stop web
docker rm web
Несколько команд покрывают большинство повседневных задач. docker images показывает загруженные образы, docker logs web отображает вывод контейнера для поиска ошибок, а docker exec -it web bash открывает оболочку внутри работающего контейнера, чтобы вы могли изучить его. Выучив эти пять-шесть команд, вы сможете уверенно управлять небольшим сервером, а остальное можно искать по мере необходимости.
Шаг 3: Используйте Docker Compose для приложений с несколькими контейнерами
Вводить длинные команды docker run быстро надоедает. Docker Compose позволяет описать весь ваш стек в одном файле и запустить его одной командой. Создайте файл с именем compose.yaml:
services:
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- web-data:/usr/share/nginx/html
restart: unless-stopped
volumes:
web-data:
Из той же директории запустите все в фоновом режиме:
docker compose up -d
Compose создает сеть, именованный том и контейнер за вас. Полезные команды:
docker compose ps
docker compose logs -f
docker compose down
Политика restart: unless-stopped означает, что сервис автоматически возвращается после перезагрузки или сбоя — удобно для сервера, за которым вы не наблюдаете круглосуточно.
Шаг 4: Сохраняйте данные с помощью томов
Это часть, в которой новички чаще всего ошибаются. Все, что записано в собственной файловой системе контейнера, исчезает при удалении или пересоздании контейнера. Чтобы сохранить данные, поместите их в том. Есть два распространенных подхода:
- Именованные тома — управляются Docker, идеально подходят для баз данных. В примере Compose выше используется том с именем
web-data. - Bind mounts — сопоставляют папку на хосте напрямую с контейнером, например
./config:/etc/app. Отлично подходит для файлов конфигурации, которые вы хотите редактировать вручную.
Просматривайте и управляйте томами из командной строки:
docker volume ls
docker volume inspect web-data
Пока ваши важные пути указывают на том, вы можете удалять и пересоздавать контейнеры весь день, не теряя ни байта. Включите каталог тома в резервное копирование сервера.
Шаг 5: Обновление образов и контейнеров
Образы контейнеров получают обновления безопасности и функций, как и любое программное обеспечение. Обновление стека Compose — это двухэтапный процесс: загрузите новые образы, затем пересоздайте контейнеры.
docker compose pull
docker compose up -d
Поскольку ваши данные хранятся в томах, пересоздание безопасно. Со временем неиспользуемые образы накапливаются и занимают место на диске. Периодически очищайте их:
docker image prune
Используйте конкретные версии тегов (например postgres:16 вместо latest), когда вам нужны предсказуемые и повторяемые обновления без сюрпризов.
Основы безопасности Docker для начинающих
Контейнеры удобны, но они не являются магическим барьером безопасности. Несколько привычек уберегут вас от проблем:
- Запускайте только доверенные образы. Предпочитайте официальные образы или известных издателей. Не запускайте случайный образ от root только потому, что в руководстве так сказано — непроверенный образ выполняет код на вашем сервере.
- Откажитесь от root внутри контейнеров. Многие официальные образы поддерживают пользователя без прав root, или вы можете указать его с помощью инструкции
USERв Dockerfile. Запуск от ограниченного пользователя уменьшает радиус поражения в случае взлома приложения. - Публикуйте только необходимые порты. Каждый флаг
-pоткрывает дверь в интернет. Держите базы данных во внутренней сети Docker и открывайте только ваш веб-интерфейс. - Своевременно обновляйте хост. Безопасность Docker начинается с защищенного сервера. Регулярно запускайте
sudo apt update && sudo apt upgradeи защитите SSH.
Прежде чем открывать что-либо публично, ознакомьтесь с нашим чек-листом о том, как защитить ваш VPS в первые 10 минут — он охватывает SSH-ключи, межсетевой экран и автоматические обновления, которые отлично сочетаются с Docker-хостом.
Выбор VPS, готового к Docker
Docker работает и на скромном оборудовании, но выделенные ресурсы действительно имеют значение, когда вы размещаете несколько контейнеров. Общий, перепроданный хостинг означает, что шумный сосед может замедлить вашу базу данных в самый неподходящий момент. ApexVPS предоставляет вам по-настоящему выделенные vCPU, NVMe SSD-хранилище и полный root-доступ, поэтому ваши контейнеры получают производительность, за которую вы платите. Каждый план поддерживает Ubuntu, Debian и другие популярные дистрибутивы, и вы можете добавить свой SSH-ключ при регистрации.
Оплата только криптовалютой через OxaPay, принимаются Bitcoin, Ethereum, USDT и более 30 криптовалют — без кредитной карты, без банковского счета и без KYC. Вы указываете email для получения данных доступа, и это все. Сравните характеристики и регионы на странице тарифов ApexVPS, чтобы выбрать план, подходящий для вашей контейнерной нагрузки.
Часто задаваемые вопросы
Нужно ли много ОЗУ для запуска Docker на VPS?
Нет. Docker сам по себе легковесен и добавляет небольшие накладные расходы. Один-два контейнера комфортно работают на 2 ГБ ОЗУ, а 4 ГБ и более дают запас для баз данных и нескольких сервисов одновременно.
Это docker-compose или docker compose?
В современных установках Compose поставляется как плагин, поэтому команда — docker compose с пробелом. Старый автономный бинарник docker-compose еще работает, но постепенно выводится из эксплуатации — используйте версию плагина в свежей установке.
Где хранятся мои данные при удалении контейнера?
Все, что записано внутри контейнера, теряется при его удалении. Храните важные данные в именованном томе или bind-mount, чтобы они пережили пересоздание контейнера. Так базы данных и загрузки остаются в безопасности.
Можно ли оплатить VPS для Docker криптовалютой?
Да. Оплата на ApexVPS принимается только в криптовалюте через OxaPay: Bitcoin, Ethereum, USDT и более 30 монет. Для регистрации нужен только email — без кредитной карты и без верификации личности.