Если ты читаешь эту статью, значит ты столкнулся с классической дилеммой: как запускать Docker-контейнеры на TrueNAS. Возможно, ты переходишь с обычного сервера на NAS-систему или хочешь консолидировать все сервисы в одном месте. Давай разберемся вместе — я покажу тебе все подходы, от официальных до продвинутых.
TrueNAS Scale Docker: Нативная поддержка через Applications
TrueNAS Scale изначально разрабатывался с учетом контейнеризации. Здесь Docker работает «из коробки», но через специальную надстройку — Applications (ранее известные как "Apps").
Шаг 1: Настройка хранилища для приложений
Перед установкой любого контейнера нужно создать Dataset для приложений:
- Открой Datasets в панели управления
- Создай новый Dataset (например,
apps) - В настройках Dataset установи ACL Type: POSIX
- Запомни путь (например:
/mnt/pool/apps)
Шаг 2: Настройка Applications
# В веб-интерфейсе TrueNAS Scale:
1. Apps → Settings
2. Configure Pool: выбери созданный Dataset
3. Установи Enable GPU Support если нужно
4. Настрой сетевые параметры (обычно DHCP)
Шаг 3: Установка Docker-контейнеров
TrueNAS Scale использует TrueCharts и Official каталоги. Давай установим простой контейнер:
- Перейди в Available Applications
- Найди нужное приложение (например, Nginx)
- Нажми Install
- Заполни базовые настройки:
- Имя приложения
- Версия образа
- Настройки сети (Host Path, порты)
- Переменные окружения
- Storage — маппинг томов
Прямая работа с Docker в TrueNAS Scale
Если тебе нужен прямой доступ к Docker CLI (для truenas docker zapret или кастомных скриптов), есть два пути:
Метод 1: Установка Docker в Scale через Shell
# Подключаемся к 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
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
Запускаем композ файл:
# Создаем директорию для проекта
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
- Установи плагин VirtualBox или используй встроенный bhyve
- Создай новую виртуальную машину:
- Дистрибутив: Ubuntu Server 22.04
- Память: минимум 4GB
- Диск: 20GB+
- CPU: 2+ ядра
- Настрой сетевой мост для доступа к сети
- Установи Docker внутри VM по инструкции выше
- Пробрось папки с данными через SMB/NFS
Проблемы и решения (truenas docker zapret)
Слово zapret в запросах часто указывает на проблемы с доступом или блокировками. Разберем частые проблемы:
Проблема 1: Нет доступа к портам контейнера
# Проверяем, слушает ли контейнер порт
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:
services:
plex:
image: plexinc/pms-docker
volumes:
# АБСОЛЮТНЫЙ путь в TrueNAS
- /mnt/mediapool/movies:/data/movies
- /mnt/mediapool/tv:/data/tv
# НЕ РАБОТАЕТ: ~/movies или относительные пути
Проблема 3: Контейнеры падают после перезагрузки
# Создаем 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
Безопасность и лучшие практики
- Не используй root: Создавай отдельного пользователя для Docker
bash
useradd -m -s /bin/bash dockeruser usermod -aG docker dockeruser su - dockeruser - Обновляй образы: Регулярно проверяй обновления
bash
docker-compose pull docker-compose up -d - Бэкап конфигов: Храни docker-compose.yml в git
- Мониторинг: Установи 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 (обратный прокси).
Итоги и рекомендации
Давай резюмируем:
- Для новичков: Используй TrueNAS Scale → Applications. Максимум функциональности с минимумом сложности.
- Для продвинутых: TrueNAS Scale + ручной Docker. Полный контроль и гибкость.
- Для TrueNAS Core: Либо VM с Linux, либо миграция на Scale. Docker в Jail — боль и страдания.
- Всегда: Документируй конфиги, настраивай бэкапы, мониторь логи.
TrueNAS — мощная система, которая отлично работает с контейнерами. Начни с простого, постепенно усложняй. И помни: лучшая конфигурация — та, которую ты понимаешь и можешь поддерживать.