Docker na serwerze NAS – QNAP TS-231P

Wstęp

Od dawna szykowałem się do zakupu serwera NAS. Przed zakupem napisałem maila do QNAP Polska pytając czy jest szansa na udostępnienie egzemplarza na testy w zamian za recenzję. Przyznam szczerze że spodziewałem się że zwyczajnie zostanę zlany, a tutaj niespodzianka po kilku dniach dostaję odpowiedź z propozycją wypożyczenia modelu TS-253B lub TS-231P. Co prawda pytałem o najnowszy model TS-231P2 ale wcześnie właśnie TS-231P był na moim celowniku.

Kilka dni i wiadomości później kurier przywozi TS-231P wraz z 2 dyskami WD RED WD10EFRX. Sprzęt dostałem na 2 tygodnie, sama konfiguracja zajęła mi 2 dni, kolejne 2 spędziłem na testach DDK.

Nie będzie to typowa recenzja bo takich już wiele w sieci. Postanowiłem sprawdzić  jak QNAP radzi sobie z dockerem, którym ostatnio dużo się zajmuję.

Pierwsza konfiguracja

Po podłączeniu i skonfigurowaniu serwera pierwszym krokiem było zainstalowanie na QTS programu Container Station.

Wraz z zainstalowaniem na konsoli pojawił się docker oraz docker-compose.

[~] # docker -v
Docker version 17.07.0-ce, build fd7dc00
[~] # docker-compose -v
docker-compose version 1.18.0, build 8dd22a9

Pierwszy duży minus za brak gita z poziomu konsoli, byłem zmuszony do ściągania zipów z githuba.

Kolejnym krokiem było ściągniecie Docker Development Kit (DDK), dla szybkiego wprowadzenia zajrzyj tutaj.

Uruchamiamy DDK

Domyślny zestaw zawiera kontenery:

TraefikMailHogPortainer, MySQL , Redis

Niestety tutaj kolejny minus, nie ma opcji na odpalenie kontenera z serwerem MySQL. Brak wsparcia dla architektury ARM.

[~] # docker run -it mysql:latest
Unable to find image ‚mysql:latest’ locally
latest: Pulling from library/mysql
container-station/docker: no matching manifest for linux/arm in the manifest list entries.
See ‚container-station/docker run –help’.

Podobny problem z obrazem MailHoga oraz własnym obrazem PHP dla Symfony.

standard_init_linux.go:187: exec user process caused „exec format error”

Z małym problemem po chwili ruszył Traefik. Przy uruchomieniu dostałem błąd z informacją że porty 80 oraz 443 są już zajęte. Niestety tylko port 443 był dostępny do zmiany, standardowej 80 nie ma szans na ruszenie.

Po zmianie ustawień docker wstaje z usługami: Traefik, Portainer, Redis.

No, skoro działa proxy, oraz portainer. Jedziemy z symfony 4.

Uruchamiamy symfony 4

# docker-compose -f example-symfony4.yml up -d

Pierwszy up bez sukcesu.

W pierwszej wersji dla kontenera PHP miałem wpisany własny obraz wraz z kilkoma dodatkami, ponownie dostajemy błąd „exec format error”. Szybka zmiana na podstawowy PHP-FPM i ponawiamy.

version: '2'
services:
 sf4_nginx:
 container_name: SF4_nginx
 image: nginx:stable
 volumes:
 - ./app/symfony4:/srv/symfony
 - ./mount/nginx/symfony4.conf:/etc/nginx/conf.d/default.conf
 labels:
 - "traefik.backend=SF4"
 - "traefik.port=80"
 - "traefik.frontend.rule=Host:sf4.udviklet.dk"
 - "traefik.docker.network=DOCKER_network"
 network_mode: "DOCKER_network"
sf4_php:
 container_name: SF4_php
 image: php:7.2-fpm
 volumes_from:
 - sf4_nginx
 network_mode: "DOCKER_network"

Tym razem kontenery się tworzą, a nasza aplikacja na symfony zaczyna działać.

Podsumowanie

Uruchomienie dockera oraz symfony było głównym celem testu. Finalnie udało się choć było kilka niespodzianek. Głównym dodatkowym plusem QNAPa jest możliwość uruchamiania kontenerów poza podstawowymi funkcjami serwera jak backup danych itp.

Jeżeli na QNAPie chcielibyśmy odpalić bardziej złożone kontenery, sugeruję  wybranie TS-253B. W tym modelu mamy już procesor Intel Celeron, oraz opcję zmiany ramu. Zdecydowanym minusem jest cena, która za wersję z 4GB ramu wynosi obecnie 2499zł. Model TS-231P kosztuje znacznie mnie bo „tylko” 779zł.

Na zakończenie, dziękuje QNAP Polska za udostępnię sprzętu przed zakupem, oraz Alicji Papadopolus za sprawny kontakt i wsparcie.