Настройка Docker на QNAP TS-231P2

Приветствую тебя, уважаемый читатель!

Поздравляю с покупкой этого замечательного NAS, неплохая альтернатива D-Link в примерно той же ценовой категории.

С данным девайсом мне посчастливилось познакомиться благодаря одному моему хорошему товарищу, приспичило ему упростить доступ к файлам из разных операционок (linux/windows/mac), ну чтож сказал тогда я, идея хорошая, но распрашивать дальше не стал. Некоторое время приходит мне сообщение типа "не получается настроить докер, можешь глянуть?", я как большой любитель всяких нестандартных железок с радостью согласился.

И так, давайте начинать с начала, из плюсов:

  • Возможность установить 2 полноразмерных жестких диска
  • 4х ядерный процессор AL314 ARM Cortex-A15 CPU @ 1.70GHz
  • Наличие 2x гигабитных Ethernet портов
  • 3x USB порта, 1 - спереди, 2 - сзади
  • Почти полноценный Linux inside (почти - потому что это не попсовый Debian или например CentOS, а самодельный QTS 4.3, благодаря busybox очень напоминающий OpenWRT)
  • Веб-интерфейс - ну тут на самом деле очень на любителя, лично я предпочитаю делать всё через консоль (по ssh есссно), однако, без веб-морды почти нереально управлять установленным софтом

Из недостатков:

  • Немного неадекватная система управления софтом - есть консольная версия qpkg_cli но она работает очень странно и иногда сегфолтится
  • Нельзя установить Midnight Commander - в репозиториях его нет, в теории можно скачать портабельную версию под ARM процессоры, но не факт что будет работать
  • Много чего невозможно настроить через веб-интерфейс, точнее можно настроить лишь то что предусмотренно разработчиком приложения
  • Архитектура процессора - ARM, на мой взгляд устройство такого типа должно иметь на борту какой-нибудь Intel Atom например или AMD Zen, чтобы можно было установить нормальную операционку, а не огрызок под названием QTS, отсюда кстати и следующий недостаток
  • Vendor lock - то есть зашить какой-нибудь Debian или FreeNAS (который к слову обладает гораздо большими возможностями) у вас скорее всего не получится

Если вас интересуют подробные технически характеристики сего девайса, то вот ссылочка.

В процессе изучения начинки выяснилось, что операционка не видит установленные 8Гб оперативной памяти, утилита free показала что в системе доступно всего 32мб оперативной памяти, тогда я подумал что с Docker могут возникнуть проблемы, но к счастью Docker демон увидел всю память, вероятно это какой-то глюк.

Давайте ставить Docker!

Установка Container Station

Я без понятия почему спецы из QNAS обозвали Docker не иначе как Container Station, возможно изначально планировалась поддержка других систем контейнеризации, например Rocker или Vagrant (который к слову не простой контейнер, а полноценная виртуальная машина).

Идём в “App Center” > “QTS Essentials”, там находим "Container Station", затем жмём “Add To QTS”. Операционка сама запустит загрузку необходимых утилит среди которых будет Docker и Docker-Compose, так что больше ни о чём беспокоиться не нужно.

Далее логинимся к девайсу через SSH, на винде я обычно использую Putty, а в нормальных операционках уже есть встроенный SSH клиент.

Настройка Docker для работы через командную строку

Увы и ах, "из коробки" Docker на данном чудо девайсе не работает, нужно немного "подшаманить" переменные окружения, для этого добавим в файл /etc/profile (йоу?) пару строк:

Перелогиниваемся через SSH и вуаля, стали доступны команды типа docker, docker-compose, можно кстати не перелогиниваться, а просто выполнить чтение конфигурации из файла:

Теперь давайте поподробнее, что эти переменные окружения означают:

  • DOCKER_HOST - Полный путь к сокету через который утилита docker будет будет взаимодействовать с Docker демоном
  • PATH - Полный путь к директории в которой находятся исполняемые утилиты для работы с Docker, а так же сам демон

Так как QTS это огрызок полноценного Linux дистрибутива, то и реализованные в нём решения по управлению приложениями имеют промежуточное состояние между "собери сам" и "традиционный установочный пакет". Иными словами, если в нормальном дистрибутиве пакеты распаковываются в системные пути типа /usr, /usr/local или например /opt в этой поделке всё сваливается в директорию /share/CACHEDEV1_DATA/.qpkg.

Без понятия почему разработчики реализовали это именно ТАК, наверно захотелось сделать "не как у всех" или "максимально несовместимо", чтобы мешать пользователям (и другим разработчикам) свободно менять платформу и не зависить от производителя (vendor lock, ага).

Проверим работоспособность

Обычно я проверяю работоспособность Docker при помощи:

В ответ данная команда должна выдать примерно следующее:

Всё пояснять не буду, остановимся на главном:

  • Server Version: 17.09.1-ce - Это версия установленного Docker сервера
  • Total Memory: 7.908GiB - Вся видимая демоном оперативка
  • Docker Root Dir: /share/CACHEDEV1_DATA/.qpkg/container-station/system-docker - Полный путь к директории в которую буду распоковываться образы, а так же храниться оверлеи

Важно: На ARM процессоре получится использовать контейнеры которые собраны специально под эту архитектуру, любые другие скорее всего работать не будут.

Как пользоваться

Прежде чем начать рекомендую обратить внимание на данный список репозиториев, это проект был создан специально для тех кто хочет использовать Docker на железках с ARM процессором (спойлер: по умолчанию контейнеры Docker собираются под amd64 системы).

Давайте теперь проверим работоспособность на каком-нибудь реальном примере, для этого предлагаю создать фай docker-compose.yml со следующим содержимым:

Сохраняем, далее запускаем контейнеры:

Некоторое время пошуршав контейнеры запускаются и вы теперь можете подключиться к 8888-му порту на ваше NAS, там будет дефолтное сообщение от NGINX, вероятно вам портебуется настроит его, но это уже совсем другая история...

Послесловие

Как видно из статьи сложности возникли только в одном месте, а именно в настройке переменных окружения, всё остальное конфигурится примерно так же как и на любом другом сервере (с поправкой на ARM конечно же).

А на этом всё, напомню что в Discord есть сообщество программистов, в котором я принимаю активное участие, поэтому если у вас возникнут вопросы, обращайтесь, не стесняйтесь, ну или в Twitter @EvilFreelancer например.

Удачной настройки, котаны 😉

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *