Se pare că operațiunea care dura mult timp a fost într-adevăr o copie de rezervă sau, în terminologia lor, un instantaneu. De la documentație:
Instantaneele sunt generate manual cu comanda snap save și
automat când un snap este eliminat (necesită snapd 2.39+). A
snapshot poate fi folosit pentru a salva starea instantaneelor dvs., pentru a reveni la instantanee
la o stare anterioară și pentru a restabili o nouă instalare snapd la a
starea salvată anterior.
Mi-am verificat snapd
versiune:
# snap --version
snap 2.52.1
snapd 2.52.1
seria 16
ubuntu 21.04
nucleu 5.11.0-40-generic
Apoi am văzut ce instantanee erau disponibile:
# snap salvat
Setați Snap Age Version Rev Size Notes
1 docker 2h58m 20.10.8 1125 1,39 GB automat
Am verificat că instantaneul este OK:
# instantaneu verificare-instantaneu 1
Instantaneul #1 a fost verificat cu succes.
În cele din urmă, a restaurat instantaneul automat:
# restaurare rapidă 1
Instantaneul #1 restaurat.
In acest punct docker ps -a
încă mi-a arătat containerele pe care le-am creat după cea mai recentă instalare, mai degrabă decât pe cele pe care doream să le refac. Poate că dacă nu aș fi creat containere noi, ar funcționa. Dar știu că cel puțin fișierele container au fost restaurate, pentru că le găsesc sub /var/snap/docker/common/var-lib-docker/overlay2/
. Acest lucru este mai bine decât nimic. Ai grija cu îndepărtare rapidă
!
Restaurarea containerelor originale
Permiteți-mi să recapitulez cum am ajuns în această stare:
- a fugit
sudo snap remove docker
care a șters containere importante
- a fugit
sudo snap install docker
pentru a instala docker din nou
- a fugit
docker-compune
care a adus două containere noi
- a fugit
restaurare rapidă 1
pentru a restabili instantaneul automat
În acest moment, am putut găsi fișierele container restaurate, dar docker ps -a
încă nu a arătat containerele reale. În rezumat, iată ce am făcut pentru a recupera containerele pline:
- am eliminat toate containerele și imaginile vizibile după a doua instalare, deoarece nu aveam nevoie de ele
- a eliminat din nou docker cu
sudo remove docker
și am observat că instantaneul automat are loc din nou: „Salvați datele instantaneului „docker” în setul de instantanee automate nr. 2”.
- a restaurat din nou primul instantaneu:
restaurare rapidă 1
Acum dacă o fac docker ps -a
Îmi pot vedea din nou toate containerele, în stare oprită! Există totuși o problemă, una dintre ele nu va începe, cu mesajul: Eroare: răspuns de la daemon: OCI runtime create failed: container with id exists:...
.
Pentru a rezolva asta, cel mai simplu mod pe care l-am găsit a fost docker commit <container-id>
și utilizați imaginea rezultată pentru a o porni ca un nou container. După ce am văzut că e bine, am scăpat de cel stricat. Toate au revenit la normal!
Apropo, se consideră o practică bună să folosești volume pentru a persista datele în containere. Imaginile pot fi, de asemenea salvat la o arhivă.