2016-04-05 14 views
0

Ich kann nirgendwo eine Antwort finden. Viele Tutorials geben an, dass Sie mit einem Datencontainer persistente Daten in Docker erhalten. Was ich jedoch nicht verstehe, ist, dass die Daten nur solange persistent sind, wie der Datencontainer existiert. Wenn es heruntergefahren und neu gestartet wird, verschwinden die Daten einfach.Docker 'Data Only Container' wird heruntergefahren

In Anbetracht dessen, dass kein System eine 100% ige Betriebszeit haben wird, und ich möchte, dass der Inhalt einer Langzeitdatenbank über das Neustarten physischer Systeme und dergleichen hinaus bestehen bleibt. Wie behebe ich Daten richtig?

Antwort

2

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.

+0

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

+0

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