hostingfaq.ru — отвечаем на вопросы о хостинге простым языком 45 провайдеров · 146 ответов · данные от 14.10.2026
hostingfaqвопрос — ответ Обновлено 14.10.2026

Docker: как установить и запустить контейнер на VPS — инструкция для новичка

Обновлено 8 октября 2026 Чтение 10 мин Раздел: Блог о хостинге и серверах: инструкции, разборы и настройки

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

Docker: как установить и запустить контейнер на VPS — инструкция для новичка

Коротко

  • 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 — показывает запущенные контейнеры.
Схема работы Docker: клиент, Docker Engine, образ, контейнер и реестр Docker Hub
Как связаны клиент, демон, образ, контейнер и реестр Docker

Какой 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 шагов, каждый со своей командой:

  1. Подключитесь по SSH (Secure Shell) на порт 22 под пользователем с правами sudo: ssh user@IP-сервера. В Windows удобно использовать клиент, как описано в статье как пользоваться PuTTY.
  2. Обновите список пакетов и сами пакеты: sudo apt update && sudo apt upgrade -y.
  3. Добавьте ключ и репозиторий 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.
  4. Установите пакеты: sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin.
  5. Проверьте службу: systemctl status docker. В строке Active должно стоять active (running). Выйти из просмотра можно клавишей q.
  6. Запустите тестовый контейнер: docker run hello-world. Сообщение Hello from Docker! подтверждает, что установка прошла успешно.
  7. Разрешите работать с Docker без sudo: sudo usermod -aG docker $USER. Затем выйдите из сессии и зайдите снова, чтобы группа применилась.

Весь процесс занимает около 10 минут, если соединение с сервером стабильное. Самый долгий шаг — скачивание пакетов на шаге 4.

Если команда на шаге 3 отличается от вашей версии системы, сверьтесь с официальной документацией Docker: раздел «Install Docker Engine on Ubuntu» на сайте docs.docker.com. Ничего не открывайте наружу дополнительно: порт 2375 демона работает без шифрования и публично его открывать нельзя.

Терминал с выводом команды docker run hello-world на сервере с Ubuntu
Успешный запуск docker run hello-world: Docker установлен и работает (иллюстрация интерфейса)

Как запустить первый контейнер и 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 ps с контейнером nginx и пробросом порта 8080:80
Список запущенных контейнеров: nginx слушает порт 8080 снаружи и 80 внутри (иллюстрация интерфейса)

Частые ошибки при работе с 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 позволяет любому в интернете управлять контейнерами и получить контроль над сервером. Захваченные серверы часто используют для атак, подробнее в материале про DDoS-атаки.

Большинство ошибок вызваны правами, занятыми портами и отсутствием томов, а чистка диска и закрытый порт 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 — платформа, которая упаковывает приложение со всеми зависимостями в контейнер. Такой контейнер одинаково запускается на ноутбуке и на VPS. Это ускоряет развёртывание и убирает проблемы с несовместимыми версиями библиотек.
Docker бесплатный?
Docker Engine для Linux бесплатен и открыт, его можно ставить на свой VPS без лицензии. Платные условия есть у отдельных продуктов, например у некоторых тарифов Docker Desktop для компаний. Актуальные условия смотрите на сайте Docker.
Как установить Docker на Ubuntu?
Подключитесь по SSH, добавьте официальный репозиторий Docker и установите пакеты docker-ce, docker-ce-cli, containerd.io, docker-buildx-plugin и docker-compose-plugin. Затем проверьте установку командой docker run hello-world. Весь процесс занимает около 10 минут.
Сколько памяти нужно для Docker?
Для обучения хватит 1 ГБ оперативной памяти и 1 vCPU. Для рабочих проектов берите 2 vCPU и 2–4 ГБ, а нагрузку баз данных закладывайте отдельно. Диск от 20 ГБ, потому что образы занимают место.
Чем контейнер отличается от виртуальной машины?
Контейнер использует ядро хостовой системы и запускается за секунды. Виртуальной машине нужна собственная гостевая ОС, поэтому она тяжелее и стартует дольше. Зато у виртуальной машины изоляция жёстче.
Что такое Docker Compose?
Это инструмент, который описывает несколько контейнеров в одном файле compose.yaml. Запуск всего набора — команда docker compose up -d, остановка — docker compose down. Он удобен, когда нужны сайт, база данных и прокси вместе.
Что такое Docker Hub?
Docker Hub — публичный реестр, из которого команда docker pull скачивает готовые образы, например nginx или postgres. Можно хранить и свои образы. Для частных проектов используют закрытые репозитории.
Как зайти внутрь запущенного контейнера?
Выполните docker exec -it web sh, где web — имя контейнера. Если в образе есть bash, используйте его вместо sh. Выйти можно командой exit, контейнер продолжит работать.
Почему данные пропали после удаления контейнера?
Файловая система контейнера удаляется вместе с ним. Чтобы данные сохранялись, подключите том (volume) или каталог сервера ключом -v. Важные данные дополнительно копируйте в бэкап.
Можно ли открыть порт 2375 для управления Docker удалённо?
Нет, порт 2375 принимает команды без шифрования и проверки, любой, кто до него достучится, получит управление сервером. Для удалённой работы используйте подключение по SSH или защищённый TLS-порт 2376.

Проверьте себя

  • Сервер работает на Ubuntu 24.04 LTS, вход по SSH на порт 22 выполняется.
  • Служба проверена командой systemctl status docker и показывает active.
  • Команда docker run hello-world выводит приветствие Docker.
  • Пользователь добавлен в группу docker, sudo перед командами не нужен.
  • Контейнер nginx открывается в браузере на порту 8080.
  • Порт 2375 закрыт, а данные хранятся в томах или в бэкапе.

На сайте есть партнёрские ссылки: если вы оформите заказ по ним, мы получим вознаграждение от провайдера. Это не влияет на цену для вас и на место в рейтинге.