TrueNAS Containers: Docker, Kubernetes, развертывание приложений | Гайд | AdminWiki

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

02 февраля 2026 7 мин. чтения #containers #devops #docker #kubernetes #nas #truenas #контейнеризация #развертывание

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

TrueNAS Scale vs Core: два подхода к контейнеризации

Важно понимать фундаментальную разницу между платформами, так как подход к контейнерам в них кардинально отличается.

Аспект TrueNAS Scale TrueNAS Core
Базовая технология Kubernetes + Docker Jails (FreeBSD) + Docker через плагины
Управление Интегрированный Apps (TrueCharts), kubectl Вручную через CLI, ограниченный GUI
Оркестрация Автоматическая (K8s) Ручная или через Docker Compose
Рекомендация Для современных контейнерных workloads Для простых задач или если нужен FreeBSD
Если ты начинаешь с нуля и хочешь максимум возможностей из коробки — выбирай TrueNAS Scale. Его архитектура изначально заточена под контейнеры и микросервисы.

Развертывание контейнеров в TrueNAS Scale: пошаговый гайд

В Scale контейнеры управляются через систему "Apps", которая по сути является кастомизированным Kubernetes. Давай пройдем весь путь от настройки до запуска первого приложения.

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

Перед запуском приложений нужно создать Dataset, который будет использоваться для хранения данных контейнеров и их конфигураций.

Рекомендуемая структура
# Рекомендуемая структура папок в Dataset
/containers/
├── apps/          # Конфиги приложений
├── data/          # Постоянные данные
│   ├── postgres/
│   ├── redis/
│   └── nextcloud/
└── compose/       # Docker Compose файлы (если нужно)

Шаг 2: Настройка сети и безопасности

По умолчанию Scale создает изолированную сеть для контейнеров. Для доступа извне нужно настроить Load Balancer или NodePort.

Не запускай контейнеры с привилегированным доступом (privileged: true) без крайней необходимости. Это серьезная угроза безопасности.

Шаг 3: Установка приложений через TrueCharts

TrueCharts — это каталог готовых Helm-чартов, адаптированных для TrueNAS Scale. Добавь репозиторий:

  1. Зайди в "Apps" → "Manage Catalogs"
  2. Нажми "Add Catalog"
  3. Введи данные:
    • Name: truecharts
    • Repository: https://github.com/truecharts/catalog
    • Branch: main

Шаг 4: Запуск первого контейнера (на примере Nextcloud)

После добавления каталога найди Nextcloud в списке приложений и нажми "Install". Вот ключевые настройки:

Пример конфигурации Nextcloud
# Важные параметры в форме установки:
Application Name: nextcloud
Version: latest
Storage:
  - Mount Path: /config
    Dataset: containers/nextcloud/config
  - Mount Path: /data
    Dataset: containers/nextcloud/data
Network:
  Service Type: LoadBalancer
  Port: 8080 → 80
Environment Variables:
  - POSTGRES_HOST: postgres-postgresql
  - POSTGRES_DB: nextcloud

Продвинутые сценарии: Docker Compose в TrueNAS

Что если нужного приложения нет в TrueCharts? Или тебе нужна сложная связка контейнеров? Используй Docker Compose.

Метод 1: Через Shell в Scale

Установи Docker Compose и создай docker-compose.yml в своем Dataset:

bash
# Установка Docker Compose
apt update && apt install docker-compose -y

# Переход в рабочую директорию
cd /mnt/pool/containers/compose

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

Метод 2: Пример Compose для стека приложений

docker-compose.yml
version: '3.8'

services:
  portainer:
    image: portainer/portainer-ce:latest
    container_name: portainer
    restart: unless-stopped
    ports:
      - "9000:9000"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /mnt/pool/containers/data/portainer:/data
    networks:
      - nas-network

  watchtower:
    image: containrrr/watchtower
    container_name: watchtower
    restart: unless-stopped
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - WATCHTOWER_CLEANUP=true
      - WATCHTOWER_POLL_INTERVAL=3600
    networks:
      - nas-network

networks:
  nas-network:
    driver: bridge
    ipam:
      config:
        - subnet: 172.20.0.0/24

Запусти стек командой: docker-compose up -d

TrueNAS Core и контейнеры: работа через Jails и Docker

В Core нет встроенной поддержки Docker, но есть несколько способов запустить контейнеры:

  1. Jails: Нативная технология FreeBSD, похожая на контейнеры
  2. Docker в Jail: Установка Docker внутри Jail (Linux-эмуляция)
  3. Bhyve VM с Docker: Виртуальная машина с Linux и Docker
Для production-нагрузок в Core рекомендуется использовать Bhyve VM с Linux. Это даст полную совместимость с Docker Hub и лучшую производительность.

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

bash
# 1. Создай Jail через GUI или CLI
# 2. Подключись к Jail
jexec <jail_id> /bin/tcsh

# 3. Установи Docker (в Jail с Linux-эмуляцией)
pkg install docker
sysrc docker_enable=YES
service docker start

# 4. Добавь пользователя в группу docker
pw groupmod docker -m <username>

Оптимизация производительности и мониторинг

Контейнеры потребляют ресурсы. Вот как контролировать их работу:

Мониторинг через CLI

bash
# Просмотр запущенных контейнеров (Scale)
k3s kubectl get pods -A

# Логи конкретного пода
k3s kubectl logs -f <pod_name>

# Использование ресурсов
k3s kubectl top pods

# Для Docker Compose
docker stats
docker ps -a

Ограничение ресурсов

В настройках приложения в Scale можно установить лимиты:

  • CPU: Reservations и Limits
  • Memory: Минимальная и максимальная память
  • GPU: Пасстрока GPU для машинного обучения

Бэкап и миграция контейнеров

Твои контейнеры должны быть восстанавливаемыми. Вот стратегия:

  1. Конфиги в Git: Все docker-compose.yml и кастомные конфиги храни в репозитории
  2. Dataset снапшоты: Регулярные снапшоты Dataset с данными контейнеров
  3. Экспорт конфигов приложений: В Scale используй "Export Config" для каждого приложения
bash
# Экспорт всех Docker Compose конфигов
cd /mnt/pool/containers/compose
tar -czf backup_compose_$(date +%Y%m%d).tar.gz *.yml

Частые проблемы и решения

Проблема: Контейнер не запускается, "ImagePullBackOff"

Решение: Проверь доступ к Docker Hub. В Scale можно настроить container registry mirrors в настройках Kubernetes.

Проблема: Нет доступа к хостовым папкам

Решение: Убедись, что Dataset смонтирован с правильными правами. В Scale используй "Storage" секцию в настройках приложения.

Проблема: Приложение недоступно по сети

Решение: Проверь Service Type (LoadBalancer/ClusterIP) и firewall правила. Для отладки используй port-forward:

bash
k3s kubectl port-forward pod/<pod_name> 8080:80
После обновления TrueNAS Scale иногда ломается доступ к контейнерам. Всегда делай снапшоты Dataset перед апгрейдом системы.

Лучшие практики работы с контейнерами в TrueNAS

  • Один контейнер — одна служба: Не запихивай всё в один контейнер
  • Используй .env файлы: Для хранения чувствительных данных (пароли, ключи)
  • Версионируй образы: Не используй :latest в production
  • Логи в отдельный Dataset: Не храни логи вместе с данными приложения
  • Регулярные обновления: Настрой watchtower или аналоги для автообновления

Контейнеры превращают TrueNAS из простого файлового хранилища в мощную домашнюю или офисную платформу. Начни с простого приложения (типа Portainer), освои базовые концепции, а затем переходи к сложным стекам. Главное — не бойся экспериментировать в изолированной среде перед переносом в production.

Поделиться:
Сохранить гайд? В закладки браузера