Die Kombination aus einem Synology NAS und Docker hat sich für viele Heimnutzer und kleine Unternehmen als äußerst leistungsstark erwiesen. Sie ermöglicht es, eine Vielzahl von Diensten – von Medienservern über Überwachungslösungen bis hin zu Webanwendungen – effizient und isoliert zu betreiben. Doch während die Einrichtung von Containern über die Synology Docker-App relativ intuitiv ist, stößt man schnell auf eine zentrale Frage, die so manchem den Schlaf raubt: „Wo zum Teufel sind meine Containerdaten eigentlich gespeichert?”
Dieses scheinbare Mysterium führt oft zu Verwirrung, wenn es um Backups, Datenmigration oder einfach nur die Verwaltung des Festplattenspeichers geht. Die Antwort ist nicht immer offensichtlich, da Docker eine komplexe interne Struktur verwendet und Synology seine eigene Interpretation dieser Struktur auf dem NAS implementiert. Aber keine Sorge, in diesem umfassenden Artikel lüften wir das Geheimnis. Wir tauchen tief in die Verzeichnisstrukturen ein, erklären die Konzepte von Docker und zeigen Ihnen genau, wo Sie Ihre wertvollen Daten finden und wie Sie sie am besten verwalten.
Docker auf Synology: Eine kurze Einführung
Bevor wir uns dem Speicherort widmen, lassen Sie uns kurz rekapitulieren, was Docker überhaupt ist und warum es auf einem Synology NAS so beliebt ist. Docker ist eine Plattform für die Entwicklung, den Versand und den Betrieb von Anwendungen in sogenannten „Containern”. Ein Container ist eine eigenständige, ausführbare Einheit, die alles enthält, was eine Anwendung zum Ausführen benötigt: den Code, eine Laufzeitumgebung, Systemwerkzeuge, Bibliotheken und Einstellungen. Der große Vorteil: Container sind leichtgewichtig, portabel und isoliert voneinander. Auf Ihrem Synology NAS wird die Docker-Anwendung über das Paketzentrum installiert und bietet eine grafische Oberfläche, um Images herunterzuladen, Container zu erstellen, zu starten und zu verwalten. Unter der Haube läuft jedoch die standardmäßige Docker-Engine, die ihre eigenen Regeln und Speicherorte hat.
Das Verborgene Reich: Warum der Speicherort nicht sofort ersichtlich ist
Die Verwirrung um den Speicherort rührt oft daher, dass Docker eine spezielle Art der Datenhaltung verwendet, die für den Endbenutzer nicht sofort transparent ist. Wenn Sie einen Container starten, werden die Anwendungsdateien (die im Docker-Image enthalten sind) in einem schreibgeschützten Zustand bereitgestellt. Alle Änderungen, die der Container während seiner Laufzeit vornimmt, werden in einer separaten, schreibbaren Ebene gespeichert. Diese Schicht ist flüchtig und verschwindet, wenn der Container gelöscht wird. Dieses Schichtsystem (basierend auf sogenannten „Storage Drivers” wie OverlayFS) ist effizient, macht es aber schwer, die eigentlichen Datenpfade direkt zu identifizieren. Hinzu kommt, dass Synology standardmäßig einen Ort für alle Docker-internen Dateien wählt, der oft außerhalb der direkt zugänglichen, freigegebenen Ordner liegt.
Der Heilige Gral: Das Docker-Root-Verzeichnis auf Synology
Der zentrale Anlaufpunkt für fast alles, was mit Docker auf Ihrem Synology NAS zu tun hat, ist ein spezielles Verzeichnis: /volume1/@docker
. Dieses Verzeichnis ist der Standard-Speicherort für die Docker-Engine auf Ihrem NAS. Es ist wichtig zu verstehen, dass @docker
ein versteckter Ordner ist und normalerweise nicht direkt über die File Station oder SMB/NFS-Freigaben zugänglich ist. Sie müssen sich per SSH mit Ihrem NAS verbinden, um dieses Verzeichnis zu erkunden. Gehen Sie dabei vorsichtig vor, da Änderungen an diesen Dateien die Funktionsweise von Docker beeinträchtigen können.
Lassen Sie uns genauer untersuchen, was sich in /volume1/@docker
verbirgt:
containers/
: Hier finden Sie Verzeichnisse für jeden Ihrer Container, benannt nach deren langer ID. In jedem Container-Verzeichnis befinden sich Konfigurationsdateien (config.v2.json
,hostconfig.json
) und oft auch die Logdateien des Containers (z.B.<container-id>-json.log
). Die tatsächlich während der Laufzeit beschriebene Ebene des Containers (die schreibbare Schicht) befindet sich technisch gesehen auch hier, wird aber durch den Storage Driver verwaltet.image/
: Dieses Verzeichnis enthält alle Ihre heruntergeladenen Docker-Images. Die Images bestehen aus mehreren Schichten, die hier gespeichert werden, um Duplikate zu vermeiden.overlay2/
(oder `aufs/`, `devicemapper/` je nach Storage Driver): Dies ist das Herzstück des Dateisystems für laufende Container. Hier werden die einzelnen Schichten von Images und die schreibbaren Schichten der Container zusammengeführt, um ein vollständiges Dateisystem darzustellen. Es ist eine komplexe Struktur, die Sie in der Regel nicht direkt manipulieren sollten.volumes/
: Und hier wird es spannend für Ihre Daten! Dieses Verzeichnis speichert die sogenannten „Named Volumes„, also von Docker verwaltete Volumes. Wenn Sie ein Volume erstellen und es nicht explizit an einen bestimmten Pfad auf Ihrem Host binden, landet es hier. Jeder Named Volume hat sein eigenes Unterverzeichnis (z.B.<volume-name>/_data
), in dem die persistenten Daten des Containers abgelegt werden.network/
: Konfigurationen für die von Docker erstellten Netzwerke.tmp/
: Temporäre Dateien.
Der Pfad /volume1/@docker
ist der Standard auf den meisten Synology NAS mit nur einem Speicherpool. Wenn Sie mehrere Speicherpools haben (z.B. Volume 1, Volume 2), kann sich das Docker-Root-Verzeichnis auch auf einem anderen Volume befinden, z.B. /volume2/@docker
, je nachdem, wo Sie Docker installiert haben oder wohin Sie es migriert haben. Überprüfen Sie dies bei Bedarf über SSH mit dem Befehl docker info | grep "Docker Root Dir"
.
Der Königsweg für Ihre Daten: Bind Mounts und Named Volumes
Die größte Herausforderung bei Docker ist, dass Container flüchtig sind. Das bedeutet, wenn Sie einen Container löschen, gehen standardmäßig alle darin erzeugten oder geänderten Daten verloren, es sei denn, Sie haben Vorkehrungen getroffen. Hier kommen persistente Datenspeicher ins Spiel – und das ist der Bereich, den Sie aktiv verwalten *sollten*.
1. Bind Mounts: Volle Kontrolle für Sie
Bind Mounts sind die populärste und oft empfohlene Methode, um persistente Daten für Ihre Container zu speichern. Dabei binden Sie einen spezifischen Ordner von Ihrem Synology NAS-Dateisystem (dem „Host”) direkt in den Dateisystembaum des Containers ein. Der Inhalt des Host-Ordners ist dann im Container unter dem angegebenen Pfad sichtbar und kann von der Anwendung im Container gelesen und beschrieben werden.
Beispiel: Wenn Ihr Container (z.B. Nextcloud) seine Daten unter /var/www/html
speichern möchte und Sie möchten, dass diese Daten dauerhaft auf Ihrem NAS im Ordner /volume1/docker/nextcloud/data
liegen, erstellen Sie einen Bind Mount von /volume1/docker/nextcloud/data
(Host-Pfad) zu /var/www/html
(Container-Pfad).
Vorteile von Bind Mounts:
- Einfacher Zugriff: Sie können die Daten direkt über die Synology File Station, SMB/NFS-Freigaben oder SSH verwalten, da sie in einem von Ihnen gewählten, zugänglichen Ordner liegen.
- Transparenz: Es ist sofort ersichtlich, wo die Daten gespeichert sind.
- Einfaches Backup: Das Backup ist so einfach wie das Sichern eines normalen Ordners auf Ihrem NAS.
- Migration: Bei einem NAS-Wechsel können Sie den gesamten Ordner einfach kopieren.
Wo platziere ich Bind Mounts auf meinem Synology NAS?
Es hat sich bewährt, einen dedizierten freigegebenen Ordner auf Ihrem NAS für Docker-bezogene Daten anzulegen, z.B. /volume1/docker
. Innerhalb dieses Ordners können Sie dann Unterordner für jede Anwendung erstellen, die persistente Daten benötigt. Zum Beispiel:
/volume1/docker/appname/config
für Konfigurationsdateien/volume1/docker/appname/data
für Anwendungsdaten/volume1/docker/appname/logs
für Logdateien
Die Synology Docker-App bietet Ihnen bei der Erstellung oder Bearbeitung eines Containers die Möglichkeit, „Volume-Einstellungen” zu konfigurieren, wo Sie genau diese Bind Mounts definieren können, indem Sie den Host-Pfad und den Mount-Pfad des Containers angeben.
2. Named Volumes: Docker verwaltet, Sie sichern
Named Volumes sind eine andere Methode für persistente Datenspeicherung, die vollständig von Docker verwaltet wird. Anstatt einen Host-Pfad explizit zu benennen, geben Sie dem Volume einen Namen (z.B. my_app_data
). Docker erstellt und verwaltet dann den tatsächlichen Speicherort auf dem Host-System.
Wie bereits erwähnt, befinden sich diese Named Volumes standardmäßig in /volume1/@docker/volumes/<volume-name>/_data
. Sie können sie nicht direkt über die File Station sehen oder bearbeiten, aber Sie können sie über die Synology Docker-App (Registerkarte „Volume”) oder über die Docker-CLI verwalten.
Vorteile von Named Volumes:
- Abstraktion: Sie müssen sich keine Gedanken über den genauen Pfad auf dem Host machen.
- Bessere Performance: Manchmal können Named Volumes eine bessere Performance bieten, da Docker den optimalen Speicherort auf dem Host wählen kann (insbesondere bei komplexen Storage Drivers).
- Einfache Portabilität: Mit Docker Compose lassen sich Named Volumes leicht definieren und replizieren.
Nachteile von Named Volumes:
- Weniger direkter Zugriff: Um die Daten einzusehen oder zu bearbeiten, müssen Sie entweder einen zweiten Container starten, der das Volume mountet, oder über SSH auf das NAS zugreifen und den Pfad in
/volume1/@docker/volumes
manuell navigieren. - Backup: Backups erfordern oft spezielle Docker-Befehle oder das direkte Sichern des
@docker/volumes
-Ordners (was aufgrund der versteckten Natur umständlicher ist).
Für die meisten Heimanwender und kleine Umgebungen, in denen eine einfache Verwaltung und Zugriff auf die Dateien gewünscht wird, sind Bind Mounts oft die praktikabelere Wahl.
Wo sind Ihre Docker Compose-Dateien?
Viele fortgeschrittene Docker-Nutzer verwenden Docker Compose, um komplexe Multi-Container-Anwendungen zu definieren und zu verwalten. Eine docker-compose.yml
-Datei ist eine Textdatei, die alle Dienste, Netzwerke und Volumes Ihrer Anwendung beschreibt. Diese Dateien sind nicht Teil des Docker-Root-Verzeichnisses oder eines Containers, sondern werden von Ihnen auf dem Host-System gespeichert.
Es wird dringend empfohlen, diese docker-compose.yml
-Dateien zusammen mit den zugehörigen Konfigurations- und Datenordnern in Ihrem dedizierten Docker-Freigabeordner zu speichern, z.B. unter /volume1/docker/<anwendungsname>/docker-compose.yml
. So haben Sie alles an einem zentralen, leicht zugänglichen Ort und können es einfach sichern.
Logdateien: Ein Blick ins Container-Gehirn
Die Logdateien von Containern sind entscheidend für die Fehlersuche. Standardmäßig speichert Docker die Container-Logs im JSON-Format innerhalb des /volume1/@docker/containers/<container-id>/<container-id>-json.log
-Pfades. Sie können diese Logs über die Synology Docker-App in der Registerkarte „Protokoll” eines Containers einsehen oder per SSH direkt auf die Datei zugreifen. Für eine einfachere Verwaltung, insbesondere wenn Sie große Mengen an Logs erwarten, können Sie auch ein Bind Mount für das Log-Verzeichnis des Containers zu einem Ordner in Ihrer /volume1/docker
-Struktur einrichten.
Best Practices für die Datenspeicherung und Verwaltung
Nachdem wir nun die Geheimnisse der Docker-Speicherorte auf Synology gelüftet haben, hier einige bewährte Methoden, um Ihre Docker-Erfahrung zu optimieren:
- Erstellen Sie einen dedizierten freigegebenen Ordner: Legen Sie einen Ordner wie
/volume1/docker
an. Dieser dient als zentrale Anlaufstelle für alle Ihre Bind Mounts,docker-compose.yml
-Dateien und andere Docker-relevante Konfigurationen. - Immer persistente Daten nutzen: Stellen Sie sicher, dass alle Daten, die nach dem Löschen eines Containers erhalten bleiben sollen (Konfigurationen, Datenbanken, hochgeladene Dateien), entweder in Bind Mounts oder Named Volumes gespeichert werden. Vermeiden Sie es, Daten direkt in der schreibbaren Ebene des Containers zu speichern.
- Backups sind entscheidend: Implementieren Sie eine solide Backup-Strategie. Bei Bind Mounts sichern Sie einfach die entsprechenden Ordner in Ihrem
/volume1/docker
-Verzeichnis. Für Named Volumes können Sie die Synology Hyper Backup-App nutzen, die den@docker
-Ordner und seine Unterverzeichnisse sichern kann, oder spezielle Docker-Befehle nutzen, um die Daten aus den Volumes zu exportieren. - Überwachen Sie den Speicherplatz: Das
/volume1/@docker
-Verzeichnis kann im Laufe der Zeit erheblich anwachsen, insbesondere wenn Sie viele Docker-Images haben oder alte, nicht mehr benötigte Container. Verwenden Sie regelmäßig den Befehldocker system prune -a
über SSH (oder die entsprechende Funktion in der Docker UI), um ungenutzte Images, Container, Volumes und Build-Caches zu entfernen und Speicherplatz freizugeben. - Sicherheit durch Berechtigungen: Achten Sie auf die Dateiberechtigungen Ihrer Bind Mounts. Container-Anwendungen laufen oft unter einem bestimmten Benutzer (z.B.
www-data
mit UID/GID 33). Stellen Sie sicher, dass der Ordner auf Ihrem NAS, den Sie mounten, die entsprechenden Lese- und Schreibberechtigungen für diesen Benutzer oder die entsprechende Gruppe hat.
Fazit: Kein Geheimnis mehr, sondern klares Wissen
Die Frage nach dem Speicherort der Container auf Ihrem Synology NAS und Docker ist nun kein ungelöstes Rätsel mehr. Sie wissen jetzt, dass der Großteil der internen Docker-Struktur im versteckten Verzeichnis /volume1/@docker
liegt, während Ihre wichtigen persistenten Daten über Bind Mounts in benutzerfreundlichen, freigegebenen Ordnern (idealerweise unter /volume1/docker
) oder in Named Volumes innerhalb von /@docker/volumes
zu finden sind.
Dieses Wissen ist entscheidend für eine effektive Verwaltung Ihrer Docker-Umgebung auf dem Synology NAS. Es ermöglicht Ihnen, gezielte Backups durchzuführen, Speicherplatz effizient zu nutzen und Probleme bei der Datenhaltung zu vermeiden. Mit dieser Klarheit können Sie das volle Potenzial Ihrer Kombination aus Synology NAS und Docker ausschöpfen und Ihre Dienste mit Vertrauen betreiben.