Docker превращает одноплатник в настоящий домашний сервер. Вместо того чтобы вручную ставить и настраивать каждый сервис — Pi-hole, Nextcloud, Home Assistant, базы данных — вы запускаете их в изолированных контейнерах одной командой. В этой статье развернём Docker на любом одноплатнике под Debian, Ubuntu или Armbian: универсальный способ, ручная установка и все важные нюансы для ARM.
Что такое Docker простыми словами
Docker — это система контейнеризации. Контейнер — это упакованное приложение вместе со всем, что ему нужно для работы: библиотеками, зависимостями, настройками. Он запускается изолированно от основной системы, но использует её ядро, поэтому работает гораздо легче виртуальной машины.
Представьте разницу так: виртуальная машина — это отдельный компьютер внутри вашего, со своей операционной системой, он тяжёлый и медленный. Контейнер — это просто изолированный процесс, который стартует за секунды и почти не ест ресурсов. Для одноплатника с его скромными гигабайтами оперативной памяти это критично: на Raspberry Pi можно спокойно держать 5-10 контейнеров одновременно.
Ключевые понятия, которые пригодятся:
**Образ (image)** — шаблон приложения, из которого создаётся контейнер. Скачивается из реестра (обычно Docker Hub) командой docker pull.
**Контейнер (container)** — запущенный экземпляр образа. Из одного образа можно запустить сколько угодно контейнеров.
**Volume (том)** — постоянное хранилище для данных контейнера. Без него контейнер — «амнезиак»: удалили его, и все данные пропали. Тома хранят данные отдельно, чтобы они пережили перезапуск.
**Docker Compose** — инструмент для описания нескольких контейнеров в одном YAML-файле. Вместо десятка команд docker run вы пишете один compose.yaml и поднимаете весь стек командой docker compose up.
Зачем Docker на одноплатнике
Одноплатник + Docker — идеальная связка для домашней инфраструктуры. Вот что это даёт:
**Чистота системы.** Каждый сервис живёт в своём контейнере. Не нужно засорять систему пакетами, конфликтами версий и остатками удалённых программ. Надоел сервис — удалили контейнер, и следа не осталось.
**Простота развёртывания.** Популярные проекты — Pi-hole, Nextcloud, Home Assistant, Portainer, Vaultwarden — распространяются как готовые Docker-образы. Развернуть их — минуты, а не часы ручной настройки.
**Лёгкий бэкап и перенос.** Весь сервис описан в паре файлов: compose.yaml и папка с данными. Скопировали на другой одноплатник — и всё работает так же.
**Изоляция.** Если один контейнер упадёт или его взломают, остальная система не пострадает.
Шаг 1. Определяем архитектуру и систему
Прежде чем ставить Docker, полезно понять, что у вас за система. Docker для ARM работает на архитектурах armhf (32-битный ARM, старые платы) и arm64/aarch64 (64-битный, современные платы). В 2026 году почти все актуальные образы собираются под обе, но 64-битная система предпочтительнее.
Проверьте архитектуру:
uname -maarch64 — 64-битный ARM (Raspberry Pi 3/4/5 с 64-битной ОС, большинство Orange Pi, Banana Pi). armv7l — 32-битный ARM (старые платы или 32-битная система). x86_64 — если вдруг это мини-ПК на Intel/AMD.
Посмотрите, что за дистрибутив:
cat /etc/os-releaseСтрока ID покажет систему: debian, ubuntu или debian (Armbian основан на Debian или Ubuntu, поэтому определяется как один из них). Именно это важно для установки — Docker ставится одинаково на все три.
Обновите систему перед установкой:
sudo apt update && sudo apt upgrade -yШаг 2. Универсальная установка (рекомендуется)
Самый простой и надёжный способ — официальный скрипт-установщик от Docker. Он сам определяет вашу систему (Debian, Ubuntu, Raspberry Pi OS, Armbian), подключает официальный репозиторий, добавляет GPG-ключ и ставит всё необходимое. Это лучший вариант для одноплатника и домашнего сервера.
Сначала поставим утилиты, которые понадобятся:
sudo apt install -y ca-certificates curlСкачаем официальный скрипт. Хорошая привычка — сначала скачать, а не запускать вслепую из интернета:
curl -fsSL https://get.docker.com -o get-docker.shМожно бегло просмотреть, что скрипт делает, перед запуском:
less get-docker.shЗапускаем установку:
sudo sh get-docker.shСкрипт сам всё поставит: Docker Engine, CLI, containerd и плагин Docker Compose. На одноплатнике это займёт пару минут. После установки скрипт больше не нужен — обновления будут приходить через обычный apt upgrade, потому что репозиторий Docker уже подключён.
Шаг 3. Ручная установка через репозиторий
Если хотите полный контроль (например, для продакшена) — ставьте вручную через официальный apt-репозиторий. Способ чуть длиннее, но прозрачнее. Ниже — вариант для Debian и Armbian на базе Debian. Для Ubuntu замените debian на ubuntu в двух местах (ссылка на GPG-ключ и URL репозитория).
Удалите возможные конфликтующие старые пакеты:
sudo apt remove docker docker-engine docker.io containerd runcНичего страшного, если apt скажет, что таких пакетов нет — значит, система чистая.
Установите зависимости:
sudo apt update
sudo apt install -y ca-certificates curl gnupgДобавьте официальный GPG-ключ Docker (современный способ через keyrings, а не устаревший apt-key):
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo 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" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullУстановите Docker и все плагины:
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginШаг 4. Запуск без sudo — важный шаг
По умолчанию все команды Docker требуют sudo, потому что демон Docker работает от root. Каждый раз писать sudo docker ... неудобно. Решение — добавить вашего пользователя в группу docker:
sudo usermod -aG docker $USER**Это самая частая ошибка новичков:** после этой команды нужно обязательно выйти из сессии и зайти заново, иначе группа не применится. Проще всего перелогиниться по SSH или выполнить:
newgrp dockerПосле этого docker работает без sudo. Важно понимать безопасность: членство в группе docker фактически равносильно правам root — любой в этой группе может через контейнер получить полный доступ к системе. На домашнем сервере, которым управляете только вы, это нормально. На машине с несколькими пользователями будьте избирательны.
Шаг 5. Проверка установки
Убедимся, что демон запущен и добавлен в автозагрузку. На большинстве систем скрипт-установщик делает это сам, но проверить не помешает:
sudo systemctl enable --now dockerПосмотрите статус:
sudo systemctl status dockerДолжно быть active (running). Проверьте версию:
docker versionИ запустите тестовый контейнер — классический hello-world:
docker run hello-worldDocker скачает крохотный образ, запустит контейнер, тот выведет приветствие и завершится. Если увидели сообщение «Hello from Docker!» — всё работает.
Шаг 6. Первый полезный контейнер
Теперь запустим что-то реальное. Для примера — веб-сервер nginx, доступный на порту 8080:
docker run -d --name web -p 8080:80 nginxРазберём флаги: -d — запуск в фоне (detached), --name web — имя контейнера, -p 8080:80 — проброс порта 80 контейнера на порт 8080 хоста. Откройте в браузере http://IP-адрес-платы:8080 — увидите стартовую страницу nginx.
Полезные команды для управления:
docker psПоказывает запущенные контейнеры. Чтобы увидеть все, включая остановленные, добавьте -a.
Остановить и удалить контейнер:
docker stop web
docker rm webШаг 7. Docker Compose — несколько сервисов сразу
Compose позволяет описать один или несколько контейнеров в файле и управлять ими как единым целым. В современном Docker это встроенный плагин — команда пишется как docker compose (без дефиса, старый docker-compose устарел).
Создайте папку для проекта и файл compose.yaml:
mkdir ~/nginx-test && cd ~/nginx-test
nano compose.yamlВпишите простой пример (обратите внимание — строка version: в 2026 году устарела и не нужна):
services:
web:
image: nginx
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html
restart: unless-stoppedЗдесь restart: unless-stopped — контейнер сам поднимется после перезагрузки платы, а volumes монтирует локальную папку html внутрь контейнера, чтобы файлы сайта хранились на хосте.
Поднять весь стек:
docker compose up -dОстановить и убрать:
docker compose downCompose — основной инструмент для домашнего сервера. Большинство self-hosted проектов дают готовый compose.yaml: скопировали, поправили пару строк, запустили.
Нюансы Armbian и слабых плат
На Armbian установка обычно проходит гладко через скрипт-установщик, но есть моменты, о которых стоит знать.
**Место на диске.** Docker-образы и данные складываются в /var/lib/docker. На одноплатнике с маленькой SD-картой это быстро съедает место. Если у вас подключён SSD или отдельный диск — стоит перенести туда каталог Docker. Проверить занятое место:
docker system dfПочистить неиспользуемые образы и контейнеры:
docker system prune -a**Оперативная память.** Контейнеры лёгкие, но не бесплатные. На плате с 1 ГБ ОЗУ следите, сколько всего запускаете, и по возможности добавьте swap-файл, чтобы система не падала под нагрузкой.
**Ядро и cgroups.** На некоторых сборках Armbian для старых плат Docker может ругаться на отсутствие поддержки cgroup в ядре. Обычно помогает обновление Armbian до актуальной версии — свежие сборки идут с правильно настроенным ядром. Если ставите на совсем старую плату и скрипт не срабатывает, как запасной вариант можно поставить пакет из репозитория системы: sudo apt install docker.io — это чуть более старая, но рабочая версия Docker.
Обслуживание
Docker почти не требует ухода, но пара привычек полезна.
Обновление приходит через обычный менеджер пакетов, потому что репозиторий уже подключён:
sudo apt update && sudo apt upgrade -yПосмотреть логи контейнера, если что-то пошло не так:
docker logs имя-контейнераЗайти внутрь работающего контейнера (например, чтобы что-то проверить):
docker exec -it имя-контейнера shПериодически чистите систему от накопившегося мусора командой docker system prune, особенно на плате с ограниченным местом.
Что дальше
Docker установлен — дальше начинается самое интересное: разворачивание сервисов. Хорошие первые проекты для домашнего одноплатника: **Portainer** (веб-панель управления самим Docker, чтобы не всё делать в терминале), **Pi-hole** (блокировщик рекламы на уровне всей сети), **Nextcloud** (личное облако вместо Google Drive), **Home Assistant** (умный дом). Все они ставятся через compose.yaml за считанные минуты.
Один одноплатник с Docker легко заменяет несколько «облачных» подписок и держит ваши данные дома, под вашим контролем — ровно то, ради чего затевается self-hosting.