MSSQL Server 2019 mit persistentem Datenspeicher

Georg P.

Benutzer
Mitglied seit
18. Mai 2009
Beiträge
7
Punkte für Reaktionen
2
Punkte
1
Hallo Forumsmitglieder,

ich sitze hier gerade an einem Versuch und komme nicht weiter, sehe meinen Fehler nicht und hoffe ihr könnt mir helfen.
Bei dem Versuch einen MS SQL Docker Container zu starten, erhalte ich immer wieder Fehlermeldungen die darauf zeigen, dass der Remote zur Verfügung gestellte Ordner des Hosts keine Schreibrechte besitzt. Ich kann mir allerdings nicht zusammenreimen, wie die Einstellungen vorgenommen werden müssen.

Mein Vorhaben:
Ich möchte auf meinem NAS einen Docker MSSQL 2019 Container zum laufen bringen, der die Daten persistent speichert.

Ausgangslage:
Synology 1515+ 16GB RAM //frisch aufgesetzt - Updates durchgeführt - LAN Bond eingestellt - Pool und Volume eingerichtet (raid5, ext4)- Docker installiert - SSH aktiviert

Vorgehen:
1. Via SSH einloggen && Docker Image ziehen (sudo docker pull mcr.microsoft.com/mssql/server:2019-latest)
2. In die Synology Oberfläche wechseln und in der Docker Administration -> Image -> Doppelklick auf das neue Image "mssql/server:2019-latest"
3. Etwaige Einstellungen vornehmen:
  • General Settings -> Container Name -> etwasBeliebiges
  • General Settings -> Enable Ressource Limitation -> Memory Limit 8192MB
  • Open Advanced Settings:
  • Volume -> add Folder -> Subfolder "mssql_dev" im Ordner "docker" (//wurde scheinbar bei Installation Docker angelegt) erstellt. -> "mssql_dev" ausgewählt und hinzugefügt
  • Volume -> Mount Path von "docker/mssql_dev" -> "/var/opt/mssql/data"
  • Port Settings -> Local Port von "Auto" bei Container Port "1433" auf "1433" (Auto:1433 -> 1433:1433) geändert.
  • Environment -> + -> "MSSQL_SA_PASSWORD" -> "<beliebiges Passwort>"
  • Environment -> + -> "ACCEPT_EULA" -> "Y"
4. Container starten
5. via Microsoft SQL Server Management Studio (MSSMS) Datenbank anlegen


Erwartetes Ergebnis:
Container läuft, legt Datenbankdatei in entsprechendem Ordner ab.

Fehlerhaftes Ergebnis:
Beim starten des Containers und anlegen der Standarddateien, wird der Container unerwartet gestoppt. Das Logfile zeigt folgende Einträge:
Code:
SQL Server 2019 will run as non-root by default.
2021-03-14 19:30:35.38 Server      Setup step is copying system data file 'C:\templatedata\master.mdf' to '/var/opt/mssql/data/master.mdf'.
2021-03-14 19:30:35.52 Server      ERROR: Setup FAILED copying system data file 'C:\templatedata\master.mdf' to '/var/opt/mssql/data/master.mdf':  2(The system cannot find the file specified.)
ERROR: BootstrapSystemDataDirectories() failure (HRESULT 0x80070002)

Bisherige Lösungsversuche:
- Weglassen des Remote Volumes -> Container startet korrekt (Daten sind halt nicht persistent)
- Übergabe des Environment Parameters "u" mit dem Wert "1024:100" -> Microsoft schreibt das die Übergabe des zu verwendenden Nutzers und der Gruppe dies per "-u UserID:GroupID" geschehen soll. Ich befürchte jedoch, dass der parameter durch die Oberfläche wohl eher als "-e u:1024:100 (o.ä.) übergeben wird. Habe dies allerdings aufgrund von fehlendem Wissen der Möglichkeiten zur Überprüfung (Unter der Annahme es würde ja einen Fehler erzeugen) nicht weiter verfolgt-
- Mounten eines anderen Verzeichnisses der Synology
- Erweitern der Rechte des Gemeinsamen Ordners der Synology
- Starten des Containers über SSH -> wurde durch das System unterbunden (Fehler Verzeichnis mounten)
- Mounten des gesamten remote-Verzeichnisses /var/opt/mssql
- Anfügen von Slashes bei Volume -> Mount Path von "docker/mssql_dev" -> "/var/opt/mssql/data/"
- Anderes Dcoker Image (2019-CU6-ubuntu-16.04)


Quellen:
Microsoft -> https://docs.microsoft.com/en-us/sq...rver-ver15&preserve-view=true&pivots=cs1-bash
https://blog.sqlxdetails.com/sql-server-2017-on-docker-inside-synology-ds918/
 
Zuletzt bearbeitet:
  • Like
Reaktionen: azche24

Ulfhednir

Benutzer
Sehr erfahren
Mitglied seit
26. Aug 2013
Beiträge
3.270
Punkte für Reaktionen
930
Punkte
174

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.481
Punkte für Reaktionen
364
Punkte
103
Ich befürchte jedoch, dass der parameter durch die Oberfläche wohl eher als "-e u:1024:100 (o.ä.) übergeben wird.
Schöne Idee, aber nicht der richtige Weg. Der Parameter heisst tatsächlich -u und muss auch als solcher übergeben werden. Die UI bietet die entsprechende Option nicht an. Der Parameter ist verwendbar mit Portainer oder über die Kommandozeile mit docker run. Docker-Compose kennt dafür das user: Element.
 
  • Like
Reaktionen: Ulfhednir

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.481
Punkte für Reaktionen
364
Punkte
103

Georg P.

Benutzer
Mitglied seit
18. Mai 2009
Beiträge
7
Punkte für Reaktionen
2
Punkte
1
Hi haydibe,
Hi Ulfhednir,
Hi Alle,

habe mich weiter dem Problem gewidmet, insbesondere dem Versuch das ganze von der Kommandozeile zum laufen zu bekommen. Letztlich habe ich die Gruppe weggelassen, während ich den Container von der Kommandozeile starte - ERFORLG! Mein Problem ist somit gelöst.

Code:
sudo docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=KennwortNachRichtinie-hier" -p 1433:1433 -v /volume1/docker/mssql/express:/var/opt/mssql/data -u 1024 --name mssql -h mssql mcr.microsoft.com/mssql/server:2019-latest

Nach starten des Containers über die Kommandozeile, ist der Container in der GUI sicht- und steuerbar
 
  • Like
Reaktionen: azche24

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.481
Punkte für Reaktionen
364
Punkte
103
Die Gruppe kann man in Container getrost weglassen.

Die UI unterstützt nur eine Teilmenge der Docker-Parameter. Sobald man bei einem über die nicht UI gestarteten Container nachträglich Einstellungen ändert, normalisiert die UI die Container-Einstellungen auf die Teilmenge die es kennt... Hier solltest Du ein Auge darauf haben ob die -u Einstellung auch "wegnormalsiert" wird.
 


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat 

 
 
  AdBlocker gefunden!

Du bist nicht hier, um Support für Adblocker zu erhalten. Dein Adblocker funktioniert bereits ;-)

Klar machen Adblocker einen guten Job, aber sie blockieren auch nützliche Funktionen.

Das Forum wird mit hohem technischen, zeitlichen und finanziellen Aufwand kostenfrei zur Verfügung gestellt. Wir zeigen keine offensive Werbung und bemühen uns um eine dezente Integration.

Bitte unterstütze dieses Forum, in dem du deinen Adblocker für diese Seite deaktivierst.

Du kannst uns auch über unseren Kaffeautomat einen Kaffe ausgeben oder ein PUR Abo abschließen und das Forum so werbefrei nutzen.

Vielen Dank für Deine Unterstützung!