Lassen Sie mich meine eigene Antwort hinzufügen, weil ich glaube, dass die anderen den Punkt von Docker verfehlen.
Die Verwendung VOLUME
in der Docker-Datei ist der richtige Weg ™, da Sie Docker darüber informieren, dass ein bestimmtes Verzeichnis permanente Daten enthält. Docker erstellt ein Volume für diese Daten und löscht sie niemals, selbst wenn Sie alle Container entfernen, die sie verwenden.
Außerdem wird das Union-Dateisystem umgangen, sodass das Volume tatsächlich ein tatsächliches Verzeichnis ist, das in allen Containern, die es gemeinsam nutzen, an der richtigen Stelle bereitgestellt wird (Lese- / Schreibzugriff oder schreibgeschützt).
Um vom Host aus auf diese Daten zugreifen zu können, müssen Sie nur noch Ihren Container überprüfen:
# docker inspect myapp
[{
.
.
.
"Volumes": {
"/var/www": "/var/lib/docker/vfs/dir/b3ef4bc28fb39034dd7a3aab00e086e6...",
"/var/cache/nginx": "/var/lib/docker/vfs/dir/62499e6b31cb3f7f59bf00d8a16b48d2...",
"/var/log/nginx": "/var/lib/docker/vfs/dir/71896ce364ef919592f4e99c6e22ce87..."
},
"VolumesRW": {
"/var/www": false,
"/var/cache/nginx": true,
"/var/log/nginx": true
}
}]
Normalerweise erstelle ich Symlinks an einem Standardort wie / srv , damit ich problemlos auf die Volumes zugreifen und die darin enthaltenen Daten verwalten kann (nur für die Volumes, die Sie interessieren):
ln -s /var/lib/docker/vfs/dir/b3ef4bc28fb39034dd7a3aab00e086e6... /srv/myapp-www
ln -s /var/lib/docker/vfs/dir/71896ce364ef919592f4e99c6e22ce87... /srv/myapp-log