Представь, что твой TrueNAS — это не просто хранилище файлов, а полноценная платформа для развертывания приложений. Контейнеры в TrueNAS позволяют запускать веб-сервисы, медиа-центры, системы мониторинга и разработки прямо на твоем NAS, эффективно используя его ресурсы. Давай разберем, как это работает в двух основных версиях: Scale (на базе Linux) и Core (на базе FreeBSD).
TrueNAS Scale: Родная поддержка контейнеров и Kubernetes
TrueNAS Scale использует Kubernetes (k3s) как оркестратор контейнеров. Это дает мощные возможности для управления приложениями через веб-интерфейс.
Настройка пула для контейнеров
Перед началом работы создай отдельный пул или датасет для хранения данных контейнеров:
# Через CLI TrueNAS Scale
zfs create tank/docker
zfs set quota=100G tank/docker
zfs set mountpoint=/mnt/tank/docker tank/docker
Установка приложений через TrueNAS Catalog
Самый простой способ — использовать встроенный каталог приложений:
- Зайди в раздел Apps
- Нажми Discover Apps
- Выбери приложение (например, Nextcloud, Plex, Home Assistant)
- Настрой параметры развертывания
Ручное развертывание через Docker Compose
Для кастомных контейнеров используй Docker Compose через TrueNAS CLI:
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
# Развертывание через 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 для сервисов
# Создание 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:
- Создай VM через Virtual Machines в веб-интерфейсе
- Установи Ubuntu/Debian
- Настрой проброс портов
- Смонтируй датасеты TrueNAS через NFS/SMB
# Внутри 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:
env:
- name: TZ
value: Europe/Moscow
persistence:
enabled: true
storageClass: "truenas-scale"
size: 1Gi
service:
type: NodePort
nodePort: 30777
port: 9000
Логи и отладка
# Просмотр логов контейнеров в 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
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-чартам. Не забывай про мониторинг, бэкапы и безопасность.