← База знаний

Docker на одноплатнике: установка на Armbian, Ubuntu и Debian

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-битная система предпочтительнее.

Проверьте архитектуру:

bash
uname -m

aarch64 — 64-битный ARM (Raspberry Pi 3/4/5 с 64-битной ОС, большинство Orange Pi, Banana Pi). armv7l — 32-битный ARM (старые платы или 32-битная система). x86_64 — если вдруг это мини-ПК на Intel/AMD.

Посмотрите, что за дистрибутив:

bash
cat /etc/os-release

Строка ID покажет систему: debian, ubuntu или debian (Armbian основан на Debian или Ubuntu, поэтому определяется как один из них). Именно это важно для установки — Docker ставится одинаково на все три.

Обновите систему перед установкой:

bash
sudo apt update && sudo apt upgrade -y

Шаг 2. Универсальная установка (рекомендуется)

Самый простой и надёжный способ — официальный скрипт-установщик от Docker. Он сам определяет вашу систему (Debian, Ubuntu, Raspberry Pi OS, Armbian), подключает официальный репозиторий, добавляет GPG-ключ и ставит всё необходимое. Это лучший вариант для одноплатника и домашнего сервера.

Сначала поставим утилиты, которые понадобятся:

bash
sudo apt install -y ca-certificates curl

Скачаем официальный скрипт. Хорошая привычка — сначала скачать, а не запускать вслепую из интернета:

bash
curl -fsSL https://get.docker.com -o get-docker.sh

Можно бегло просмотреть, что скрипт делает, перед запуском:

bash
less get-docker.sh

Запускаем установку:

bash
sudo sh get-docker.sh

Скрипт сам всё поставит: Docker Engine, CLI, containerd и плагин Docker Compose. На одноплатнике это займёт пару минут. После установки скрипт больше не нужен — обновления будут приходить через обычный apt upgrade, потому что репозиторий Docker уже подключён.

Шаг 3. Ручная установка через репозиторий

Если хотите полный контроль (например, для продакшена) — ставьте вручную через официальный apt-репозиторий. Способ чуть длиннее, но прозрачнее. Ниже — вариант для Debian и Armbian на базе Debian. Для Ubuntu замените debian на ubuntu в двух местах (ссылка на GPG-ключ и URL репозитория).

Удалите возможные конфликтующие старые пакеты:

bash
sudo apt remove docker docker-engine docker.io containerd runc

Ничего страшного, если apt скажет, что таких пакетов нет — значит, система чистая.

Установите зависимости:

bash
sudo apt update
sudo apt install -y ca-certificates curl gnupg

Добавьте официальный GPG-ключ Docker (современный способ через keyrings, а не устаревший apt-key):

bash
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

Подключите репозиторий. Эта команда сама подставит вашу архитектуру и кодовое имя релиза:

bash
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 и все плагины:

bash
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:

bash
sudo usermod -aG docker $USER

**Это самая частая ошибка новичков:** после этой команды нужно обязательно выйти из сессии и зайти заново, иначе группа не применится. Проще всего перелогиниться по SSH или выполнить:

bash
newgrp docker

После этого docker работает без sudo. Важно понимать безопасность: членство в группе docker фактически равносильно правам root — любой в этой группе может через контейнер получить полный доступ к системе. На домашнем сервере, которым управляете только вы, это нормально. На машине с несколькими пользователями будьте избирательны.

Шаг 5. Проверка установки

Убедимся, что демон запущен и добавлен в автозагрузку. На большинстве систем скрипт-установщик делает это сам, но проверить не помешает:

bash
sudo systemctl enable --now docker

Посмотрите статус:

bash
sudo systemctl status docker

Должно быть active (running). Проверьте версию:

bash
docker version

И запустите тестовый контейнер — классический hello-world:

bash
docker run hello-world

Docker скачает крохотный образ, запустит контейнер, тот выведет приветствие и завершится. Если увидели сообщение «Hello from Docker!» — всё работает.

Шаг 6. Первый полезный контейнер

Теперь запустим что-то реальное. Для примера — веб-сервер nginx, доступный на порту 8080:

bash
docker run -d --name web -p 8080:80 nginx

Разберём флаги: -d — запуск в фоне (detached), --name web — имя контейнера, -p 8080:80 — проброс порта 80 контейнера на порт 8080 хоста. Откройте в браузере http://IP-адрес-платы:8080 — увидите стартовую страницу nginx.

Полезные команды для управления:

bash
docker ps

Показывает запущенные контейнеры. Чтобы увидеть все, включая остановленные, добавьте -a.

Остановить и удалить контейнер:

bash
docker stop web
docker rm web

Шаг 7. Docker Compose — несколько сервисов сразу

Compose позволяет описать один или несколько контейнеров в файле и управлять ими как единым целым. В современном Docker это встроенный плагин — команда пишется как docker compose (без дефиса, старый docker-compose устарел).

Создайте папку для проекта и файл compose.yaml:

bash
mkdir ~/nginx-test && cd ~/nginx-test
nano compose.yaml

Впишите простой пример (обратите внимание — строка version: в 2026 году устарела и не нужна):

yaml
services:
  web:
    image: nginx
    ports:
      - "8080:80"
    volumes:
      - ./html:/usr/share/nginx/html
    restart: unless-stopped

Здесь restart: unless-stopped — контейнер сам поднимется после перезагрузки платы, а volumes монтирует локальную папку html внутрь контейнера, чтобы файлы сайта хранились на хосте.

Поднять весь стек:

bash
docker compose up -d

Остановить и убрать:

bash
docker compose down

Compose — основной инструмент для домашнего сервера. Большинство self-hosted проектов дают готовый compose.yaml: скопировали, поправили пару строк, запустили.

Нюансы Armbian и слабых плат

На Armbian установка обычно проходит гладко через скрипт-установщик, но есть моменты, о которых стоит знать.

**Место на диске.** Docker-образы и данные складываются в /var/lib/docker. На одноплатнике с маленькой SD-картой это быстро съедает место. Если у вас подключён SSD или отдельный диск — стоит перенести туда каталог Docker. Проверить занятое место:

bash
docker system df

Почистить неиспользуемые образы и контейнеры:

bash
docker system prune -a

**Оперативная память.** Контейнеры лёгкие, но не бесплатные. На плате с 1 ГБ ОЗУ следите, сколько всего запускаете, и по возможности добавьте swap-файл, чтобы система не падала под нагрузкой.

**Ядро и cgroups.** На некоторых сборках Armbian для старых плат Docker может ругаться на отсутствие поддержки cgroup в ядре. Обычно помогает обновление Armbian до актуальной версии — свежие сборки идут с правильно настроенным ядром. Если ставите на совсем старую плату и скрипт не срабатывает, как запасной вариант можно поставить пакет из репозитория системы: sudo apt install docker.io — это чуть более старая, но рабочая версия Docker.

Обслуживание

Docker почти не требует ухода, но пара привычек полезна.

Обновление приходит через обычный менеджер пакетов, потому что репозиторий уже подключён:

bash
sudo apt update && sudo apt upgrade -y

Посмотреть логи контейнера, если что-то пошло не так:

bash
docker logs имя-контейнера

Зайти внутрь работающего контейнера (например, чтобы что-то проверить):

bash
docker exec -it имя-контейнера sh

Периодически чистите систему от накопившегося мусора командой docker system prune, особенно на плате с ограниченным местом.

Что дальше

Docker установлен — дальше начинается самое интересное: разворачивание сервисов. Хорошие первые проекты для домашнего одноплатника: **Portainer** (веб-панель управления самим Docker, чтобы не всё делать в терминале), **Pi-hole** (блокировщик рекламы на уровне всей сети), **Nextcloud** (личное облако вместо Google Drive), **Home Assistant** (умный дом). Все они ставятся через compose.yaml за считанные минуты.

Один одноплатник с Docker легко заменяет несколько «облачных» подписок и держит ваши данные дома, под вашим контролем — ровно то, ради чего затевается self-hosting.

Корпус Eruscus Blade 19" 1U Стоечный корпус на 4 платы Raspberry Pi с активным охлаждением.
Смотреть корпус →