Самый быстрый способ: создать сервер из образа Docker
Если вы создаёте новый сервер, быстрее всего выбрать Docker в списке образов. Сервер запускается на Ubuntu 24.04 LTS с уже установленными Docker Engine и Docker Compose, и сразу после входа можно выполнить docker compose up. Описание приложения и рекомендуемый размер есть на странице Docker VPS.
Если вы хотите добавить Docker на уже работающий сервер или использовать другую ОС, например Debian или AlmaLinux, установите его вручную по шагам ниже. Все команды рассчитаны на подключение под root. Если вы вошли обычным пользователем, добавляйте перед командами sudo.
Что проверить перед установкой
Docker работает на серверах любого размера. Для личных проектов с несколькими контейнерами достаточно самого маленького общего тарифа на 12 ГБ; для одновременного запуска базы данных, веб-сервера и кеша лучше выбрать 24 ГБ или больше. Если вы часто скачиваете и собираете образы, NVMe VPS с быстрым диском заметно ускорит работу.
Если в системе есть старые пакеты Docker из репозитория ОС, сначала удалите их, чтобы они не смешивались с официальными. Неустановленные пакеты просто пропускаются, поэтому команду можно выполнить как есть.
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do apt remove -y $pkg; doneУстановка Docker на Ubuntu 24.04
Шаг 1. Добавьте ключ и адрес репозитория
apt update
apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" > /etc/apt/sources.list.d/docker.listШаг 2. Установите Docker Engine и Compose
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginПосле установки служба Docker запускается автоматически и стартует вместе с сервером после перезагрузки. Те же команды работают и в Ubuntu 22.04 и 26.04. Название версии в адресе репозитория автоматически берётся из /etc/os-release.
Установка Docker на Debian 13
В Debian порядок тот же, что в Ubuntu, меняется только адрес репозитория на linux/debian. Те же команды работают и в Debian 12.
apt update
apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" > /etc/apt/sources.list.d/docker.list
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginУстановка Docker на AlmaLinux 10
AlmaLinux и Rocky Linux используют репозиторий Docker для RHEL. Чтобы не было конфликта со встроенным Podman, сначала уберите его, а затем установите Docker. Те же команды подходят для AlmaLinux 9 и Rocky Linux 9 и 10.
dnf remove -y podman buildah runc
dnf -y install dnf-plugins-core
dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl enable --now dockerЕсли при первой установке спросят, принять ли ключ подписи репозитория, нажмите y. В системах семейства RHEL служба не запускается автоматически после установки, поэтому последняя строка systemctl enable --now docker включает её сейчас и при загрузке.
Проверка установки и первый контейнер
Запустите тестовый контейнер командой ниже. Если появится сообщение, начинающееся с Hello from Docker, значит движок, скачивание образов и запуск контейнеров работают. С флагом --rm контейнер удаляется сразу после завершения.
docker run --rm hello-world
docker compose versionЕсли вы хотите пользоваться Docker под обычным пользователем, добавьте его в группу docker и войдите заново. Группа docker даёт права, равные root, поэтому добавляйте только доверенных пользователей.
usermod -aG docker usernameЗапуск сервисов через Docker Compose
Compose позволяет описать настройки контейнеров в одном YAML файле и запустить их одной командой. При переносе или создании нового сервера тот же файл заново поднимает то же окружение. Например, файл для одного веб-сервера Nginx выглядит так.
mkdir -p /opt/web && cd /opt/web
cat > compose.yaml <<'EOF'
services:
web:
image: nginx:stable
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html:ro
restart: unless-stopped
EOF
docker compose up -dОткройте в браузере http://YOUR_SERVER_IP, и появится страница Nginx. Если положить index.html в папку html, отобразится этот файл. Из часто используемых команд достаточно четырёх.
docker compose ps: показывает работающие контейнеры и их порты.docker compose logs -f: показывает логи в реальном времени. Выход по Ctrl+C.docker compose pull && docker compose up -d: скачивает новые образы и обновляет контейнеры до новой версии.docker compose down: останавливает и удаляет контейнеры. Данные в томах сохраняются.
Если указать restart: unless-stopped, контейнеры автоматически поднимутся после перезагрузки сервера. Остановленными останутся только те, что вы остановили сами.
Файрвол и публикация портов
Docker сам добавляет порты, опубликованные через ports:, в правила файрвола (iptables) и открывает их. Поэтому порт, указанный в ports:, доступен извне, даже если он не разрешён в ufw. Базы данных и панели управления, которые не нужно показывать наружу, привяжите только к 127.0.0.1, как ниже, и они будут доступны лишь изнутри сервера.
ports:
- "127.0.0.1:5432:5432"Удобно открывать для веб-сервисов только порты 80 и 443, а остальные сервисы пусть обращаются друг к другу по имени внутри одной сети Compose. Для базового файрвола всего сервера следуйте руководству по базовому файрволу и откройте только SSH, HTTP и HTTPS.
Управление логами и диском
Если ничего не настроить, логи контейнеров копятся без ограничений. Укажите драйвер логов local в /etc/docker/daemon.json, как ниже, и логи будут сжиматься и храниться только в заданном объёме. После сохранения выполните systemctl restart docker: настройка применится к новым контейнерам.
{
"log-driver": "local"
}Неиспользуемые образы и остановленные контейнеры тоже занимают место на диске. Посмотрите объём командой docker system df и удалите неиспользуемые образы командой docker image prune -a. Если данных становится много, можно подключить к серверу блочный диск NVMe и использовать его как папку данных Docker.
Сохранность данных и следующие шаги
Контейнер можно в любой момент удалить и создать заново, но данные в томах заново не создашь. Регулярно делайте дамп базы данных, а весь сервер защищайте автоматическим резервным копированием или снимками. Как это сделать, описано в руководстве по резервным копиям и снимкам.
Файл Compose для запуска WordPress в Docker есть в руководстве по установке WordPress. Если вы хотите разворачивать несколько приложений через веб-интерфейс и автоматически получать сертификаты HTTPS, создайте сервер из образа Coolify или Dokploy. Подходящие размеры для работы с контейнерами собраны на странице контейнерный VPS.
