Viele Tutorials geben an, dass Sie mit einem Datencontainer persistente Daten in Docker erreichen.
Beachten Sie, dass dies bei neueren Versionen von Docker nicht mehr der Fall ist; Bände sind jetzt "erstklassige" Bürger und können mit dem Befehl docker volume
erstellt/gelöscht werden/etc. Dies bedeutet, dass Sie eine persistente Datenvolumen von Lauf erstellen:
$ docker volume create --name myvolume
Und später Sie es wie folgt anhängen:
$ docker run -v myvolume:/data ...
Was ich nicht verstehe, ist jedoch, dass die Daten scheint nur persistent zu sein, solange der Datencontainer existiert.
Es wäre hilfreich, wenn Sie in Ihre Frage Informationen zur Erstellung Ihres Nur-Daten-Containers aufnehmen würden. Beachten Sie, dass ein reiner Datencontainer nicht muss "läuft", um nützlich zu sein; es muss einfach existieren. So zum Beispiel könnte ich ein Nur-Daten-Container wie folgt erstellen:
$ docker run -v /data --name datacontainer busybox true
Das wird natürlich laufen /bin/true
und anschließend sofort beenden:
$ docker ps -a
47568a43d386 busybox "true" 7 seconds ago Exited (0) 6 seconds ago datacontainer
Aber auch wenn der Behälter verlassen hat ich kann den Einsatz des Volumens in einen neuen Behälter machen:
$ docker run -it --volumes-from datacontainer busybox sh
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/tank-docker--vol
83844100 2398688 81445412 3% /data
Dieser Mechanismus ist, was Sie früher permanente Volumes in Docker bekommen würde verwenden, um als 1,10, aber nicht mehr (1,9, vielleicht?) notwendig wegen des Befehls docker volume
.
Nur um das für jeden, der in der Art, wie ich war, kämpfen. Ihr Data-Only-Container erstellt ein Volume mit einem generierten Namen (z. B. 4488845jgjg3). Wenn Sie den Container das nächste Mal instanziieren, erstellt es ein zweites Volume mit einem anderen Name. Beide Volumes sind auf dem Hostcomputer vorhanden. Wenn Sie sie jedoch nicht anhand der ID referenzieren, erhalten Sie nicht automatisch Zugriff darauf. – Andy
Deshalb geben Sie dem Datencontainer einen Namen und greifen mit '--volumes-from' auf die Volumes zu (so müssen Sie sich keine Gedanken über die ID der einzelnen Volumes machen). – larsks