Ich habe Docker mit entfernt sudo snap remove docker
. Eigentlich wollte ich es gar nicht entfernen, sondern habe nur überprüft, ob ich es mit installiert hatte snap
(hätte im Nachhinein verwenden sollen ), und darauf vertraut, dass es mich mit „ does“ snap list
dazu auffordert . Aber es hat einfach weitergemacht und Docker entfernt. Gut. Die Neuinstallation ging schnell.[Y/n]
apt
Aber wo sind meine Container?! Alle Bilder und Container (docker ps -a)
waren weg! Die Deinstallation hat lange gedauert, daher frage ich mich, ob es ein Backup gibt oder die Dateien noch vorhanden sind und die Container wiederhergestellt werden können. Die Bilder sind mir egal, nur die Container. Danke.
Überprüft /var/snap/docker/common/var-lib-docker/containers
, aber die Originalbehälter sind nicht vorhanden.
Antwort1
Es stellte sich heraus, dass der Vorgang, der lange dauerte, tatsächlich ein Backup oder, in ihrer Terminologie, ein Snapshot war. Von derDokumentation:
Snapshots werden manuell mit dem Befehl „snap save“ und automatisch beim Entfernen eines Snaps generiert (erfordert Snapd 2.39+). Mit einem Snapshot können Sie den Zustand Ihrer Snaps sichern, Snaps auf einen früheren Zustand zurücksetzen und eine neue Snapd-Installation auf einen zuvor gespeicherten Zustand zurücksetzen.
Ich habe meine snapd
Version überprüft:
# snap --version
snap 2.52.1
snapd 2.52.1
series 16
ubuntu 21.04
kernel 5.11.0-40-generic
Dann habe ich gesehen, welche Schnappschüsse verfügbar waren:
# snap saved
Set Snap Age Version Rev Size Notes
1 docker 2h58m 20.10.8 1125 1.39GB auto
Überprüfte, ob der Schnappschuss in Ordnung war:
# snap check-snapshot 1
Snapshot #1 verified successfully.
Abschließend wurde der automatische Snapshot wiederhergestellt:
# snap restore 1
Restored snapshot #1.
An diesem Punkt docker ps -a
wurden mir immer noch die Container angezeigt, die ich nach der letzten Installation erstellt habe, und nicht die, die ich wiederherstellen wollte. Vielleicht würde es einfach funktionieren, wenn ich keine neuen Container erstellt hätte. Aber ich weiß, dass zumindest die Containerdateien wiederhergestellt wurden, weil ich sie unter finden kann /var/snap/docker/common/var-lib-docker/overlay2/
. Das ist besser als nichts. Seien Sie vorsichtig mit snap remove
!
Wiederherstellen der Originalcontainer
Lassen Sie mich zusammenfassen, wie ich in diesen Zustand geraten bin:
- lief
sudo snap remove docker
, wodurch wichtige Container vernichtet wurden - lief
sudo snap install docker
, um Docker erneut zu installieren - lief
docker-compose up
, was zwei neue Container hervorbrachte - ausgeführt
snap restore 1
, um den automatischen Snapshot wiederherzustellen
An diesem Punkt konnte ich die wiederhergestellten Containerdateien finden, aber docker ps -a
die tatsächlichen Container wurden immer noch nicht angezeigt. Zusammenfassend habe ich Folgendes getan, um die vollständigen Container zurückzubekommen:
- alle sichtbaren Container und Bilder nach der zweiten Installation entfernt, da ich sie nicht benötigte
- habe Docker erneut entfernt
sudo snap remove docker
und bemerkt, dass der automatische Snapshot erneut ausgeführt wird:„Daten von Snap „Docker“ im automatischen Snapshot-Set Nr. 2 speichern“. - den ersten Snapshot nochmal wiederhergestellt:
snap restore 1
Wenn ich das jetzt mache, docker ps -a
kann ich alle meine Container wieder sehen, im gestoppten Zustand! Es gibt jedoch ein Problem, einer von ihnen startet nicht, mit der Meldung: Error: response from daemon: OCI runtime create failed: container with id exists:...
.
Um dies zu umgehen, war der einfachste Weg, den ich fand, docker commit <container-id>
das resultierende Image zu verwenden, um es als neuen Container zu starten. Nachdem ich sah, dass es in Ordnung war, habe ich das defekte entfernt. Alles wieder normal!
Übrigens gilt es als gute Praxis, Volumes zu verwenden, um Daten in Containern zu speichern. Bilder können auchGerettetin ein Archiv.