MSSQL dla linux dostępny jest już od dłuższego czasu – pierwsze wersje pojawiły się już w roku 2017. Utworzenie wersji dla systemu linux otworzyło też drogę do możliwości uruchomienia bazy w postaci kontenera (Docker). To z kolei pozwoliło uruchamiać bazy MSSQL na QNAP bez potrzeby instalacji maszyn wirtualnych – dzięki aplikacji Container Station kontener z bazą mógł być uruchomiony na dowolnym urządzeniu z procesorem x86. Sama instalacja i podstawowa konfiguracja bazy jest dosyć prosta, jednak domyślna instalacja z poziomu Container Station może przysporzyć w późniejszym czasie pewnych problemów. Druga kwestia – najnowsza wersja dostępna w podstawowym repozytorium, to 2017. Dlatego w tym wpisie pokażę, jak na QNAP uruchomić MSSQL w wersji 2019, ale także jak później można zmieniać zaawansowane opcje.
- Jeśli do tej pory tego nie zrobiliśmy, instalujemy aplikację Container Station. W tym celu logujemy się do systemu, otwieramy aplikację App Center i wyszukujemy Container Station. Oczywiście klikamy Zainstaluj:
- Po instalacji klikamy Otwórz. Wyświetli nam się ekran inicjowania Container Station, który głównie wymaga od nas wskazania katalogu, gdzie przechowywane będą pliki kontenerów. Domyślnie to Container i na dobrą sprawę możemy go zostawić w takiej formie. Klikamy Start Now.
- Po chwili powinniśmy zobaczyć ekran główny aplikacji:
- Generalnie do instalacji i uruchomienia aplikacji możemy skorzystać z opcji Create, która pozwoli wyszukać dowolną aplikację spośród dostępnych w Docker Hub. Jeśli wpiszemy MSSQL, zostanie wyświetlona lista dostępnych aplikacji. Pierwsza na liście (ta, która ma najwięcej gwiazdek) to aplikacja przygotowana przez Microsoft:
Jeśli kontener stworzony przez Microsoft nie jest odnaleziony – aktualizacja instrukcji na końcu wpisu.
- Klikając w nazwę obrazu, zostaniemy przekierowani na stronę docker hub, gdzie znajdziemy dodatkowe informacje na temat danego obrazu. W przypadku tego obrazu kieruje do strony… na której znajdziemy link do kolejnej strony 😉
Docelowy adres z opisem obrazów MSSQL
- Na docelowej stronie znajdziemy parametry, które pozwolą nam uruchomić kontener. Jednak zanim do tego dojdziemy, proponuję jeszcze jeden krok. Podobnie jako w wpisie o tworzeniu maszyny wirtualnej, proponuję przygotować wirtualny przełącznik, który pozwoli nam na stworzenie kontenera z osobnym adresem IP. Wykonujemy kroki 2-10 z opisu wyżej.
- Jeśli na tym etapie skorzystamy z opcji pobierania MSSQL z repozytorium znalezionego w Container Station, będziemy mogli uruchomić ostatnio wersję MSSQL, ale w wersji 2017. Chcąc skorzystać z wersji 2019, musimy zrobić to trochę inaczej. W tym celu łączymy się przez SSH do naszego QNAP (robimy to jak w instrukcji wspomnianej w kroku 6):
- Następnie za pomocą wpisujemy następującą komendę, pozwalającą pobrać ostatnią wersję MSSQL 2019:
docker pull mcr.microsoft.com/mssql/server
Ten proces potrwa kilka minut, ponieważ musi zostać pobrany obraz MSSQL Server, który ma ok 1,4GB
- Na razie nie przerywajmy połączenia SSH, jeszcze do niego wrócimy, ale użyjemy Container Station do utworzenia kontenera z pobranego obrazu. W tym celu jeszcze raz wpisujemy w Create -> Search Images: MSSQL. Teraz zobaczymy, że domyślnie wyświetlony jest obraz dostępny lokalnie:
- Klikamy przycisk Create. Zostanie wyświetlone okno tworzenia kontenera z wyświetlonymi podstawowymi opcjami. Wypełniamy pole Name oraz określamy procentowo, z jakiej mocy CPU ten kontener może korzystać oraz ile pamięci RAM może wykorzystać. Następnie klikamy Advanced Settings >>
- W oknie, które się wyświetli zaczynamy od konfiguracji Environment, czyli zmiennych środowiskowych. Uwaga informacje, co należy tam wpisać znajdziemy zazwyczaj w opisie na stronie obrazu w Docker Hub. Tutaj jest nie inaczej:
A więc wiemy już, że musimy zaakceptować postanowienia licencyjne, utworzyć hasło administratora SA oraz wskazać typ zainstalowanej bazy:
ACCEPT_EULA -> Y
SA_PASSWORD -> [nasze wybrane hasło]
MSSQL_PID -> ID wersji bazy
- Następnie przechodzimy do części Network. Tutaj musimy ustawić, w jaki sposób kontener będzie dostępny z sieci. Domyślna opcja to NAT z przekierowaniem portu, ja jednak wybiorę opcję Bridge. Da to możliwość ustawienia osobnego adresu IP dla tego kontenera. Dzięki temu będziemy mogli łączyć się z bazą danych na innym adresie IP niż nasz NAS. Oczywiście tę opcję warto skonfigurować „pod siebie”, niekoniecznie jak w przykładzie 🙂 Po wybraniu opcji Bridge wskazujemy wirtualny przełącznik oraz zaznaczamy opcję Use static IP. To pozwoli nam ustawić określony adres IP ręcznie.
- Ostatnie zmiany, które warto wprowadzić, ustawiamy w części Shared Folder. Tutaj możemy wskazać katalogi, które będą mapowane do katalogów NAS. Co nam to daje? Z poziomu NAS będziemy widzieli zawartość wybranych, wewnętrznych katalogów kontenera, w których możemy np. zapisywać backup bazy. Do tego celu utworzyłem dwa katalogi DB i Backup:
Teraz możemy te katalogi zamapować. Pierwszy, czyli DB mapujemy do katalogu, gdzie MSSQL przechowuje pliki baz danych, czyli „/var/opt/mssql”. Drugi, jak nazwa wskazuje, to katalog na backupy, zamontowany w kontenerze w katalogu /mnt/backup
- Klikamy przycisk Create, zostanie wyświetlone okno w podsumowaniem. Klikamy OK, rozpocznie się tworzenie kontenera.
- Jeśli wszystko wykonaliśmy poprawnie, kontener zostanie utworzony, uruchomiony i będzie widoczny na liście:
Kontener mamy już uruchomiony, więc wracamy do połączenia SSH. Po połączeniu możemy wyświetlić listę kontenerów korzystając z polecenia:
docker container ls
Aby połączyć się z kontenerem, wykonujemy polecenie:
sudo docker exec -u 0 -it qnap-mssql „bash”
Oczywiście „qnap-mssql” to nazwa mojego kontenera, więc polecenie należy dostosować do własnych potrzeb.
W tym momencie jesteśmy podłączeni do powłoki kontenera, która pozwoli nam na szersze zarządzanie nie tylko aplikacją, ale systemem w kontenerze. Do czego może nam to być potrzebne? Załóżmy, że potrzebujemy uruchomić narządzie do konfiguracji MSSQL, które pozwoli nam zmienić typ licencji. W przypadku wersji zainstalowanej w Windows – mamy do dyspozycji graficzne narzędzie. Tutaj tylko tekstowe. Aby uruchomić to narzędzie, wykonujemy komendę:
/opt/mssql/bin/mssql-conf setup
No i pojawia się problem, ponieważ zobaczymy listę błędów.
Dlatego musimy doinstalować polecenie sudo
apt-get update && apt-get install sudo
Następnie możemy już spokojnie wpisać komendę:
sudo /opt/mssql/bin/mssql-conf setup
I naszym oczom ukaże się lista opcji konfiguracyjnych dla naszej instancji MSSQL, która pozwoli na zmianę wersji bądź dodanie klucza licencyjnego:
W ten sposób możemy oczywiście wykonać więcej operacji konfiguracyjnych. Pełną listę opcji z przykładamy znajdziemy na stronach Microsoft:
https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-configure-mssql-conf?view=sql-server-ver15
Jeśli chodzi o możliwość połączenia i pracy z serwerem SQL, możemy skorzystać z narzędzia sqlcmd, które domyślnie jest dostępne w kontenerze. Nie da się jednak wykonać go standardowo wpisując komendę w konsoli:
Dlatego musimy podać pełną ścieżkę do tego narzędzia wraz z adresem naszego serwera SQL oraz użytkownikiem/hasłem:
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'Pa$$w0rd’
Uwaga – po –P wpisujemy hasło ustawione podczas konfiguracji kontenera. W moim przypadku to testowy 'Pa$$w0rd’, ale w Waszym powinno być Wasze hasło 🙂
Na dzisiaj to tyle:)
Aktualizacja 10.2021r.
Jeśli podczas wyszukiwania kontenera mssql server pojawią się problemy i aplikacja Container Station nie wyświetli oficjalnego kontenera stworzonego przez Microsoft, należy pobrać go w inny sposób.
- Przechodzimy na stronę hub.docker.com i wyszukujemy mysql server. W chwili pisania tej aktualizacji, dostępny jest pod linkiem:
https://hub.docker.com/_/microsoft-mssql-server
- Na stronie odnajdujemy komendę pobierania kontenera:
- Kopiujemy polecenie:
docker pull mcr.microsoft.com/mssql/server
- Logujemy się od urządzenia przez SSH i wykonujemy to polecenie:
- Następnie przechodzimy do Container Station i wyszukujemy mssql. Pierwszy wynik powinien zostać wyświetlony w zakładce „Lokalny”. Klikamy Zainstaluj i postępujemy dalej jak w artykule.