TrueNAS Docker: Настройка, установка и управление контейнерами в Scale/Core | AdminWiki

TrueNAS Docker: Полное руководство по контейнеризации в Scale и Core

07 января 2026 8 мин. чтения #devops #docker #homelab #truenas #truenas scale #контейнеризация

Если ты читаешь эту статью, значит ты столкнулся с классической дилеммой: как запускать Docker-контейнеры на TrueNAS. Возможно, ты переходишь с обычного сервера на NAS-систему или хочешь консолидировать все сервисы в одном месте. Давай разберемся вместе — я покажу тебе все подходы, от официальных до продвинутых.

Важное уточнение: TrueNAS имеет две основные ветки — Core (на FreeBSD) и Scale (на Debian Linux). Подход к Docker в них кардинально отличается!

TrueNAS Scale Docker: Нативная поддержка через Applications

TrueNAS Scale изначально разрабатывался с учетом контейнеризации. Здесь Docker работает «из коробки», но через специальную надстройку — Applications (ранее известные как "Apps").

Шаг 1: Настройка хранилища для приложений

Перед установкой любого контейнера нужно создать Dataset для приложений:

  1. Открой Datasets в панели управления
  2. Создай новый Dataset (например, apps)
  3. В настройках Dataset установи ACL Type: POSIX
  4. Запомни путь (например: /mnt/pool/apps)

Шаг 2: Настройка Applications

webui
# В веб-интерфейсе TrueNAS Scale:
1. Apps → Settings
2. Configure Pool: выбери созданный Dataset
3. Установи Enable GPU Support если нужно
4. Настрой сетевые параметры (обычно DHCP)

Шаг 3: Установка Docker-контейнеров

TrueNAS Scale использует TrueCharts и Official каталоги. Давай установим простой контейнер:

  1. Перейди в Available Applications
  2. Найди нужное приложение (например, Nginx)
  3. Нажми Install
  4. Заполни базовые настройки:
    • Имя приложения
    • Версия образа
    • Настройки сети (Host Path, порты)
    • Переменные окружения
    • Storage — маппинг томов
Внимание! Приложения в TrueNAS Scale запускаются через Kubernetes (k3s), а не напрямую через Docker Daemon. Это дает оркестрацию, но добавляет абстракцию.

Прямая работа с Docker в TrueNAS Scale

Если тебе нужен прямой доступ к Docker CLI (для truenas docker zapret или кастомных скриптов), есть два пути:

Метод 1: Установка Docker в Scale через Shell

bash
# Подключаемся к TrueNAS Scale по SSH
ssh root@truenas.local

# Обновляем пакеты
apt update

# Устанавливаем Docker
apt install -y docker.io docker-compose

# Добавляем пользователя в группу docker
usermod -aG docker $(whoami)

# Запускаем и добавляем в автозагрузку
systemctl enable --now docker

# Проверяем установку
docker --version
docker-compose --version

Метод 2: Docker Compose файл для Nginx

docker-compose.yml
version: '3.8'

services:
  nginx:
    image: nginx:alpine
    container_name: nginx-proxy
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /mnt/pool/docker/nginx/html:/usr/share/nginx/html
      - /mnt/pool/docker/nginx/conf:/etc/nginx/conf.d
      - /mnt/pool/docker/nginx/logs:/var/log/nginx
    networks:
      - proxy-network

networks:
  proxy-network:
    driver: bridge

Запускаем композ файл:

bash
# Создаем директорию для проекта
mkdir -p /mnt/pool/docker/nginx
cd /mnt/pool/docker/nginx

# Создаем docker-compose.yml
nano docker-compose.yml

# Запускаем
docker-compose up -d

# Проверяем
docker ps
docker logs nginx-proxy

TrueNAS Core Docker: Обходные пути

В TrueNAS Core (FreeBSD) нет нативного Docker. Но есть несколько рабочих решений:

Метод Сложность Производительность Рекомендация
Jail с Docker внутри Средняя Низкая Только для тестов
Виртуальная машина с Linux Высокая Высокая Для production
Миграция на TrueNAS Scale Зависит от данных Оптимальная Лучшее решение

Создание VM с Docker в TrueNAS Core

  1. Установи плагин VirtualBox или используй встроенный bhyve
  2. Создай новую виртуальную машину:
    • Дистрибутив: Ubuntu Server 22.04
    • Память: минимум 4GB
    • Диск: 20GB+
    • CPU: 2+ ядра
  3. Настрой сетевой мост для доступа к сети
  4. Установи Docker внутри VM по инструкции выше
  5. Пробрось папки с данными через SMB/NFS

Проблемы и решения (truenas docker zapret)

Слово zapret в запросах часто указывает на проблемы с доступом или блокировками. Разберем частые проблемы:

Проблема 1: Нет доступа к портам контейнера

bash
# Проверяем, слушает ли контейнер порт
docker ps
# Должны видеть что-то вроде: 0.0.0.0:8080->80/tcp

# Проверяем firewall на TrueNAS Scale
iptables -L -n

# Если firewall блокирует, добавляем правило
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT

# Или отключаем firewall временно (не для production!)
systemctl stop firewalld

Проблема 2: Контейнеры не видят данные на pool

Правильно маппим volumes:

docker-compose.yml
services:
  plex:
    image: plexinc/pms-docker
    volumes:
      # АБСОЛЮТНЫЙ путь в TrueNAS
      - /mnt/mediapool/movies:/data/movies
      - /mnt/mediapool/tv:/data/tv
    # НЕ РАБОТАЕТ: ~/movies или относительные пути

Проблема 3: Контейнеры падают после перезагрузки

bash
# Создаем systemd сервис для автозапуска
sudo nano /etc/systemd/system/docker-compose-app.service

# Содержимое файла:
[Unit]
Description=Docker Compose Application
Requires=docker.service
After=docker.service

[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/mnt/pool/docker/myapp
ExecStart=/usr/bin/docker-compose up -d
ExecStop=/usr/bin/docker-compose down
TimeoutStartSec=0

[Install]
WantedBy=multi-user.target

# Активируем сервис
sudo systemctl enable docker-compose-app.service

Безопасность и лучшие практики

  1. Не используй root: Создавай отдельного пользователя для Docker
    bash
    useradd -m -s /bin/bash dockeruser
    usermod -aG docker dockeruser
    su - dockeruser
  2. Обновляй образы: Регулярно проверяй обновления
    bash
    docker-compose pull
    docker-compose up -d
  3. Бэкап конфигов: Храни docker-compose.yml в git
  4. Мониторинг: Установи Portainer для управления
    bash
    docker run -d -p 9000:9000 \
      -v /var/run/docker.sock:/var/run/docker.sock \
      -v portainer_data:/data \
      --name portainer \
      portainer/portainer-ce

Что выбрать: Applications или ручной Docker?

TrueNAS Scale Applications (через UI):

  • ✅ Простота установки через веб-интерфейс
  • ✅ Автоматические обновления
  • ✅ Интеграция с TrueNAS ACL
  • ❌ Ограниченная кастомизация
  • ❌ Зависимость от каталогов TrueCharts

Ручной Docker (через CLI):

  • ✅ Полный контроль над контейнерами
  • ✅ Любые образы из Docker Hub
  • ✅ Сложные docker-compose конфиги
  • ❌ Требует знаний Linux/Docker
  • ❌ Нет интеграции с TrueNAS UI

Мой совет как ментора: Начинай с Applications для стандартных сервисов (Plex, Nextcloud, Wireguard). Когда упрешься в ограничения — переходи на ручной Docker для кастомных решений. И всегда документируй свои конфиги в docker-compose.yml!

Часто задаваемые вопросы (FAQ)

Можно ли использовать Docker Compose в TrueNAS Scale?

Да, можно. Установи docker-compose через apt и работай как на обычном Linux-сервере. Но помни, что контейнеры из Applications и CLI будут работать независимо.

Почему в TrueNAS Core нет Docker?

TrueNAS Core основан на FreeBSD, где Docker не работает нативно. Docker использует ядерные функции Linux (cgroups, namespaces). В FreeBSD есть аналог — Jail, но он несовместим с Docker образами.

Как перенести контейнеры с обычного сервера на TrueNAS?

1. Экспортируй docker-compose.yml и .env файлы
2. Перенеси volumes на TrueNAS pool через SMB/NFS/rsync
3. Настрой пути в docker-compose.yml на абсолютные (/mnt/pool/...)
4. Запусти docker-compose up -d на TrueNAS Scale

Безопасно ли устанавливать Docker вручную в TrueNAS Scale?

Да, но с оговорками. iXsystems не поддерживает эту конфигурацию официально. Обновления TrueNAS могут сломать ручную установку. Всегда бэкапь конфиги и данные.

Какие контейнеры чаще всего запускают на TrueNAS?

Топ-5: 1) Plex/Jellyfin (медиасервер), 2) Nextcloud (файловое облако), 3) Home Assistant (умный дом), 4) Bitwarden/Vaultwarden (менеджер паролей), 5) Nginx Proxy Manager (обратный прокси).

Итоги и рекомендации

Давай резюмируем:

  1. Для новичков: Используй TrueNAS Scale → Applications. Максимум функциональности с минимумом сложности.
  2. Для продвинутых: TrueNAS Scale + ручной Docker. Полный контроль и гибкость.
  3. Для TrueNAS Core: Либо VM с Linux, либо миграция на Scale. Docker в Jail — боль и страдания.
  4. Всегда: Документируй конфиги, настраивай бэкапы, мониторь логи.

TrueNAS — мощная система, которая отлично работает с контейнерами. Начни с простого, постепенно усложняй. И помни: лучшая конфигурация — та, которую ты понимаешь и можешь поддерживать.

Следующий шаг: Установи Portainer для визуального управления Docker, затем настрой автоматические бэкапы контейнеров через cron и BorgBackup.
Поделиться:
Сохранить гайд? В закладки браузера