Docker: как установить и запустить контейнер на VPS — инструкция для новичка
Материал из блога HostingFAQ объясняет, что такое Docker и зачем он нужен на виртуальном сервере. Вы установите Docker Engine на Ubuntu 24.04 за 7 шагов, запустите первый контейнер с nginx, соберёте простой файл Docker Compose и узнаете, какие ошибки чаще всего ломают запуск и как их исправить.

Коротко
- Docker — платформа, которая запускает приложения в изолированных контейнерах; первый релиз вышел в 2013 году.
- Для тестов хватит VPS с 1 vCPU и 1 ГБ оперативной памяти, для рабочих проектов берите от 2 vCPU и 2–4 ГБ.
- Установка Docker Engine на Ubuntu 24.04 занимает 7 шагов и около 10 минут.
- Проверка установки — одна команда: docker run hello-world.
- Порт 2375 демона Docker открывать нельзя: он работает без шифрования, для удалённого доступа используют TLS-порт 2376 или SSH.
- Docker Compose описывает несколько контейнеров в одном файле и запускает их командой docker compose up -d.
- Контейнер стартует за секунды, а виртуальная машина с отдельной ОС — за десятки секунд и дольше.
Что такое Docker простыми словами
Docker — платформа, которая запускает приложения в изолированных контейнерах. Первый релиз вышел в 2013 году, и сегодня это один из самых распространённых способов доставлять программы на сервер.
Представьте транспортный контейнер: груз внутри может быть любым, а погрузка и перевозка везде одинаковы. Так и в Docker: приложение лежит в одной упаковке вместе с библиотеками и настройками, поэтому работает одинаково на вашем ноутбуке и на сервере. Контейнеры делят ядро хостовой операционной системы, поэтому стартуют за секунды.
VPS (Virtual Private Server, виртуальный сервер) с Docker избавляет от ручной настройки окружения. Как это выглядит на практике, показано в материале про контейнер Docker на VPS. Если сервера ещё нет, узнайте, как арендовать виртуальный сервер, или посмотрите, как создать сервер в облаке.
Чаще всего Docker на VPS нужен, чтобы быстро запустить:
- веб-сервер
nginx; - базу данных;
- личное облако Nextcloud для хранения файлов;
- сервисы на Node.js.
Для обучения хватит 1 vCPU (виртуальное ядро процессора), 1 ГБ оперативной памяти и 20 ГБ диска.
Как работает Docker: образ, контейнер и реестр
Docker Engine состоит из двух частей: демона dockerd, который хранит образы и запускает контейнеры, и клиента docker, через который вы вводите команды. Клиент отправляет запросы демону через локальный сокет.
Образ — это неизменяемый шаблон с приложением и его файлами. Контейнер — запущенный экземпляр образа, и из одного образа можно создать сколько угодно контейнеров. Образы хранятся в реестре, по умолчанию это Docker Hub.
Контейнеры делят ядро хостовой ОС, поэтому стартуют за секунды. Виртуальной машине нужна отдельная гостевая ОС и обычно десятки секунд на загрузку; о разнице читайте в материале про типы гипервизоров, а основы системы на сервере разобраны в статье про Linux для сервера.
Данные контейнера удаляются вместе с ним, если не подключить том (volume) или каталог сервера. Том создаёт и хранит сам Docker, обычно в /var/lib/docker/volumes/, и он переживает удаление контейнера. Файлы, которым не нужно жить рядом с приложением, удобно выносить в объектное хранилище S3.
По умолчанию контейнеры подключаются к внутренней сети bridge и получают собственные IP-адреса. Чтобы открыть приложение снаружи, порт пробрасывают флагом -p 8080:80: порт 8080 сервера ведёт на порт 80 контейнера. Контейнеры в одной пользовательской сети обращаются друг к другу по имени.
Путь от образа до работающего контейнера занимает две команды и одну проверку:
docker pull nginx— скачивает образ из Docker Hub;docker run -d -p 8080:80 nginx— создаёт и запускает контейнер;docker ps— показывает запущенные контейнеры.

Какой VPS нужен для Docker
Docker не требует мощного железа: контейнеры делят ядро хостовой ОС и тратят ресурсы только на сами приложения. Для обучения хватит VPS с 1 vCPU (виртуальным ядром процессора), 1 ГБ RAM (оперативной памяти) и 20 ГБ диска. Для рабочих проектов берите от 2 vCPU и 2–4 ГБ RAM.
Образы и тома быстро занимают место, поэтому диск закладывайте с запасом. Цена зависит от тарифа и провайдера, а сервер для обучения можно арендовать на месяц. О тарифах подробнее рассказано в материале об аренде виртуального сервера.
| Сценарий | vCPU | RAM | Диск |
|---|---|---|---|
| Обучение | 1 | 1 ГБ | 20 ГБ |
| Один сайт | 2 | 2 ГБ | 40 ГБ |
| Несколько сервисов | 2 и больше | 4 ГБ | 40 ГБ и выше |
Перед заказом убедитесь, что тариф даёт нужные условия для работы:
- образ Ubuntu 24.04 LTS (версия с долгой поддержкой);
- доступ по SSH на порту
22; - пользователь с правами
sudo.
Если SSH для вас в новинку, прочитайте, как подключиться к серверу через PuTTY. Когда ресурсы определены, выберите VPS под свою задачу и переходите к установке.
Как установить Docker на Ubuntu 24.04 по шагам
Для установки используем Docker Engine, то есть пакет docker-ce из официального репозитория Docker. Версия из стандартных репозиториев Ubuntu обычно отстаёт, поэтому подключаем официальный источник.
Вам понадобится VPS с Ubuntu 24.04 LTS, минимум 1 vCPU, 1 ГБ RAM и 20 ГБ диска. Если сервера ещё нет, посмотрите ответы на вопросы о выборе VPS. Пока вы не знакомы с консолью, загляните в материал про основные команды Linux для сервера.
Выполните по порядку 7 шагов, каждый со своей командой:
- Подключитесь по SSH (Secure Shell) на порт 22 под пользователем с правами sudo:
ssh user@IP-сервера. В Windows удобно использовать клиент, как описано в статье как пользоваться PuTTY. - Обновите список пакетов и сами пакеты:
sudo apt update && sudo apt upgrade -y. - Добавьте ключ и репозиторий Docker:
sudo apt install -y ca-certificates curl, затемsudo install -m 0755 -d /etc/apt/keyringsиsudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc. После этого создайте файл/etc/apt/sources.list.d/docker.listсо строкой репозитория из документации и снова выполнитеsudo apt update. - Установите пакеты:
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin. - Проверьте службу:
systemctl status docker. В строкеActiveдолжно стоятьactive (running). Выйти из просмотра можно клавишейq. - Запустите тестовый контейнер:
docker run hello-world. СообщениеHello from Docker!подтверждает, что установка прошла успешно. - Разрешите работать с Docker без sudo:
sudo usermod -aG docker $USER. Затем выйдите из сессии и зайдите снова, чтобы группа применилась.
Весь процесс занимает около 10 минут, если соединение с сервером стабильное. Самый долгий шаг — скачивание пакетов на шаге 4.
Если команда на шаге 3 отличается от вашей версии системы, сверьтесь с официальной документацией Docker: раздел «Install Docker Engine on Ubuntu» на сайте docs.docker.com. Ничего не открывайте наружу дополнительно: порт 2375 демона работает без шифрования и публично его открывать нельзя.

Как запустить первый контейнер и Docker Compose
Запустите nginx одной командой: docker run -d --name web -p 8080:80 nginx. Флаг -d уводит контейнер в фон, --name web задаёт имя, а -p 8080:80 пробрасывает порт 8080 сервера на порт 80 внутри контейнера. Скачивание образа из Docker Hub обычно занимает от нескольких секунд до 1–2 минут.
Откройте в браузере http://IP-сервера:8080: появится страница «Welcome to nginx!». Если она не загрузилась, разрешите порт в файрволе командой ufw allow 8080/tcp и проверьте правила у провайдера. Как устроен проброс, объясняет статья про проброс портов.
Состоянием контейнера управляют три команды:
docker ps— список работающих контейнеров;docker logs web— журнал nginx;docker stop web— остановка контейнера.
Теперь то же самое через Docker Compose. Создайте файл compose.yaml:
services:
web:
image: nginx
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html:ro
Положите в каталог html файл index.html, затем выполните docker compose up -d. Остановить и удалить контейнер можно командой docker compose down. Каталог html остаётся на сервере: без тома (volume) или каталога данные удаляются вместе с контейнером.
По той же схеме запускают другие сервисы: приложение на Node.js, Nextcloud или PostgreSQL.

Частые ошибки при работе с Docker и как их исправить
Почти все сбои у новичков повторяются и решаются одной-двумя командами. Ниже разобраны пять ситуаций, с которыми вы, скорее всего, столкнётесь на VPS с Ubuntu 24.04.
Вот что мы разберём:
- permission denied при обращении к
docker.sock; - port is already allocated;
- пропавшие данные после удаления контейнера;
- диск, забитый образами;
- открытый в интернет порт 2375.
Permission denied при обращении к docker.sock
Причина: ваш пользователь не входит в группу docker, и сокет /var/run/docker.sock ему недоступен. Добавьте пользователя командой sudo usermod -aG docker $USER, затем выйдите из SSH-сессии и зайдите снова. Проверьте результат командой docker run hello-world.
Port is already allocated
Причина: порт на сервере уже занят другим контейнером или процессом. Смените проброс, например с 8080:80 на 8081:80, либо остановите того, кто занимает порт. Найти его поможет docker ps -a. О том, как работают порты, читайте в материале про порт 25 и сетевые порты.
Пропали данные после удаления контейнера
Причина: данные хранились внутри контейнера, а том (volume) не подключали. Запускайте с томом: docker run -v mydata:/var/lib/data ..., или монтируйте каталог сервера. Том не заменяет копию, поэтому настройте резервное копирование важных данных.
Диск заполнен образами
Причина: старые образы, остановленные контейнеры и кэш сборки копятся и быстро съедают диск, особенно на минимальных 20 ГБ. Оцените занятое место командой docker system df, затем освободите его командой docker system prune. Она удаляет остановленные контейнеры и неиспользуемые образы без тегов, поэтому сначала проверьте список через docker ps -a.
Открыт порт 2375 в интернет
Причина: демон Docker слушает порт 2375 без шифрования и без проверки пароля. Закройте порт в файрволе и уберите его из настроек демона. Для удалённой работы используйте SSH или защищённый TLS-порт 2376 (TLS — протокол шифрования).
Большинство ошибок вызваны правами, занятыми портами и отсутствием томов, а чистка диска и закрытый порт 2375 избавляют от самых неприятных сюрпризов.
Docker, виртуальная машина или Kubernetes: что выбрать
Docker-контейнер делит ядро хостовой ОС, поэтому стартует за секунды. Виртуальной машине нужна отдельная гостевая ОС, и запуск занимает десятки секунд и дольше. Как устроены такие машины, объясняет материал про выбор гипервизора.
Kubernetes — система управления контейнерами, она нужна для десятков контейнеров на нескольких серверах. На одном VPS хватает Docker Compose: один файл compose.yaml и команда docker compose up -d. Когда проект вырастет, прочитайте, как настроить кластер Kubernetes и настроить Ingress.
Сравните три варианта по главным параметрам:
| Параметр | Docker-контейнер | Виртуальная машина | Kubernetes |
|---|---|---|---|
| Время старта | секунды | десятки секунд и дольше | секунды на контейнер, плюс настройка кластера |
| Изоляция | на уровне процессов, общее ядро | полная, своя ОС | как у контейнеров |
| Ресурсы | для обучения 1 vCPU, 1 ГБ RAM | больше: ОС занимает память и диск | несколько серверов |
| Сложность | низкая | средняя | высокая |
| Когда подходит | один VPS, 1–10 сервисов | разные ОС и жёсткая изоляция | десятки контейнеров на нескольких серверах |
Кому Docker не подходит
Docker решает много задач, но не все. Он запускает приложения на ядре Linux, поэтому программы с графическим интерфейсом Windows в обычных контейнерах на Linux-сервере не работают. Если вам нужен рабочий стол Windows или программа с окнами, берите виртуальную машину.
Второе ограничение — ресурсы. На сервере меньше 1 ГБ RAM (оперативной памяти) система и сам демон Docker займут почти всё, а контейнерам места не останется. Для обучения нужно минимум 1 vCPU, 1 ГБ RAM и 20 ГБ диска.
Третье — необходимость. Если у вас один сайт на WordPress или простой лендинг, контейнеры только добавят работы. Хватит обычного хостинга: разницу объясняет материал про домен и хостинг. Либо поставьте нужные пакеты прямо в систему командой apt install.
Docker требует базовых навыков Linux и дисциплины. Вот что придётся делать регулярно:
- подключать тома (volume), иначе данные удалятся вместе с контейнером;
- обновлять образы и пересоздавать контейнеры;
- проверять место на диске через
docker system df; - чистить лишнее командой
docker system prune.
Если эти задачи вас не пугают, арендуйте сервер и начните с малого. Ответы на частые вопросы собраны на странице о выборе VPS, а порядок первых шагов описан в статье как сделать сервер.
Частые вопросы
Что такое Docker и для чего он нужен?
Docker бесплатный?
Как установить Docker на Ubuntu?
Сколько памяти нужно для Docker?
Чем контейнер отличается от виртуальной машины?
Что такое Docker Compose?
Что такое Docker Hub?
Как зайти внутрь запущенного контейнера?
Почему данные пропали после удаления контейнера?
Можно ли открыть порт 2375 для управления Docker удалённо?
Проверьте себя
- Сервер работает на Ubuntu 24.04 LTS, вход по SSH на порт 22 выполняется.
- Служба проверена командой systemctl status docker и показывает active.
- Команда docker run hello-world выводит приветствие Docker.
- Пользователь добавлен в группу docker, sudo перед командами не нужен.
- Контейнер nginx открывается в браузере на порту 8080.
- Порт 2375 закрыт, а данные хранятся в томах или в бэкапе.
На сайте есть партнёрские ссылки: если вы оформите заказ по ним, мы получим вознаграждение от провайдера. Это не влияет на цену для вас и на место в рейтинге.