TrueNAS контейнеры: Docker, Kubernetes, развертывание приложений | AdminWiki
Timeweb Cloud — сервера, Kubernetes, S3, Terraform. Лучшие цены IaaS.
Попробовать

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

07 февраля 2026 6 мин. чтения #devops #docker #ix-systems #kubernetes #nas #truenas #контейнеры #развертывание

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

TrueNAS Scale: Родная поддержка контейнеров и Kubernetes

TrueNAS Scale использует Kubernetes (k3s) как оркестратор контейнеров. Это дает мощные возможности для управления приложениями через веб-интерфейс.

Настройка пула для контейнеров

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

Рекомендация: Создай отдельный датасет с квотой, чтобы контейнеры не заполнили все системное пространство.
bash
# Через CLI TrueNAS Scale
zfs create tank/docker
zfs set quota=100G tank/docker
zfs set mountpoint=/mnt/tank/docker tank/docker

Установка приложений через TrueNAS Catalog

Самый простой способ — использовать встроенный каталог приложений:

  1. Зайди в раздел Apps
  2. Нажми Discover Apps
  3. Выбери приложение (например, Nextcloud, Plex, Home Assistant)
  4. Настрой параметры развертывания

Ручное развертывание через Docker Compose

Для кастомных контейнеров используй Docker Compose через TrueNAS CLI:

docker-compose.yml
version: '3.8'
services:
  nginx:
    image: nginx:alpine
    container_name: web-server
    ports:
      - "8080:80"
    volumes:
      - /mnt/tank/docker/nginx/html:/usr/share/nginx/html
      - /mnt/tank/docker/nginx/conf:/etc/nginx/conf.d
    networks:
      - truenas-net

  postgres:
    image: postgres:14
    container_name: db
    environment:
      POSTGRES_PASSWORD: secure_password
      POSTGRES_DB: myapp
    volumes:
      - /mnt/tank/docker/postgres/data:/var/lib/postgresql/data
    networks:
      - truenas-net

networks:
  truenas-net:
    driver: bridge
bash
# Развертывание через kubectl в TrueNAS Scale
kubectl apply -f deployment.yaml

# Или через Docker Compose (если установлен отдельно)
docker-compose -f /mnt/tank/docker/docker-compose.yml up -d

TrueNAS Core: Контейнеры через Jail и Docker

В TrueNAS Core (FreeBSD) подход отличается. Основные варианты:

Метод Плюсы Минусы Использование
Jails (родные) Высокая производительность, интеграция с ZFS Ограниченный выбор ПО Сервисы FreeBSD (nginx, PostgreSQL)
Docker в Linux VM Полный доступ к Docker Hub Накладные расходы виртуализации Любые Linux-приложения
Rancher/VMs Оркестрация, масштабирование Сложная настройка Продакшен-среды

Создание Jail для сервисов

bash
# Создание Jail через CLI
iocage create -n "myjail" -r 13.2-RELEASE

# Запуск Jail
iocage start myjail

# Вход в Jail
iocage console myjail

# Установка ПО внутри Jail
pkg install nginx
service nginx enable
service nginx start

Docker через Linux VM

Создай виртуальную машину с Linux и установи Docker:

  1. Создай VM через Virtual Machines в веб-интерфейсе
  2. Установи Ubuntu/Debian
  3. Настрой проброс портов
  4. Смонтируй датасеты TrueNAS через NFS/SMB
bash
# Внутри Linux VM
# Установка Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

# Монтирование датасета TrueNAS
mount -t nfs 192.168.1.100:/mnt/tank/docker /mnt/docker

# Запуск контейнера с доступом к данным
docker run -d \
  --name nextcloud \
  -v /mnt/docker/nextcloud:/var/www/html \
  -p 8080:80 \
  nextcloud:latest

Мониторинг и управление контейнерами

Portainer для TrueNAS Scale

Установи Portainer для визуального управления Docker:

portainer-values.yaml
env:
  - name: TZ
    value: Europe/Moscow

persistence:
  enabled: true
  storageClass: "truenas-scale"
  size: 1Gi

service:
  type: NodePort
  nodePort: 30777
  port: 9000
Внимание: Не используй порт 9000 по умолчанию — он может конфликтовать с другими сервисами TrueNAS. Используй порты выше 30000.

Логи и отладка

bash
# Просмотр логов контейнеров в TrueNAS Scale
kubectl logs -n ix-nextcloud nextcloud-pod-12345

# В Linux VM с Docker
docker logs nextcloud --tail 100

# Мониторинг ресурсов
docker stats
kubectl top pods

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

  • Изоляция сетей: Используй отдельные сети для разных групп контейнеров
  • Non-root пользователи: Запускай контейнеры от непривилегированных пользователей
  • Обновления: Регулярно обновляй образы контейнеров
  • Бэкапы: Настрой ZFS снапшоты для датасетов с данными контейнеров
  • Ресурсы: Ограничивай CPU и RAM для контейнеров через cgroups
docker-compose.yml
services:
  app:
    image: myapp:latest
    user: "1000:1000"  # Запуск от non-root пользователя
    deploy:
      resources:
        limits:
          cpus: '1.0'
          memory: 512M
    networks:
      - internal-net
    security_opt:
      - no-new-privileges:true

networks:
  internal-net:
    driver: bridge
    internal: true  # Изолированная сеть

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

Можно ли использовать Docker в TrueNAS Core напрямую?

Нет, TrueNAS Core работает на FreeBSD, где Docker не поддерживается нативно. Используй Jail или Linux VM с Docker.

Как перенести контейнеры между TrueNAS Scale и Core?

Экспортируй данные volumes и Docker Compose файлы. Образы контейнеров совместимы, но оркестрация отличается.

Почему контейнеры не видят мои датасеты?

Проверь права доступа (chmod/chown) и правильность монтирования volumes. В Scale используй StorageClass, в Core — NFS/SMB монтирование.

Как обновить приложения в TrueNAS Scale?

Через раздел Apps → выбери приложение → Update. Или через Helm: helm upgrade my-app ./chart

Заключение

TrueNAS контейнеры открывают мощные возможности для домашних лабораторий и небольших продакшен-сред. Scale предлагает современный Kubernetes-стек «из коробки», а Core требует больше ручной настройки через Jail или виртуальные машины.

Выбор платформы:

  • TrueNAS Scale — если нужны контейнеры и оркестрация как основная функция
  • TrueNAS Core — если контейнеры второстепенны, а стабильность ZFS и FreeBSD критична

Начни с простых приложений из каталога, затем переходи к кастомным Docker Compose и Helm-чартам. Не забывай про мониторинг, бэкапы и безопасность.

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