Eliminé la ventana acoplable con sudo snap remove docker
. En realidad, no quería eliminarlo, solo estaba verificando si lo había instalado snap
(debería haberlo usado snap list
en retrospectiva), confiando en que me indicaría [Y/n]
lo mismo apt
. Pero simplemente siguió adelante y eliminó Docker. Bien. Fue rápido reinstalarlo nuevamente.
Pero ¿dónde están mis contenedores? ¡Todas las imágenes y contenedores (docker ps -a)
habían desaparecido! Me tomó mucho tiempo desinstalarlo, así que me pregunto si hay alguna copia de seguridad o si los archivos aún se conservan y los contenedores se pueden restaurar. No te preocupes por las imágenes, solo los contenedores. Gracias.
Revisado /var/snap/docker/common/var-lib-docker/containers
pero los contenedores originales no están allí.
Respuesta1
Resulta que la operación que estaba tardando mucho era efectivamente una copia de seguridad, o en su terminología, una instantánea. Desde eldocumentación:
Las instantáneas se generan manualmente con el comando guardar instantánea y automáticamente cuando se elimina una instantánea (requiere snapd 2.39+). Se puede utilizar una instantánea para hacer una copia de seguridad del estado de sus instantáneas, revertirlas a un estado anterior y restaurar una nueva instalación de instantáneas a un estado previamente guardado.
Revisé mi snapd
versión:
# snap --version
snap 2.52.1
snapd 2.52.1
series 16
ubuntu 21.04
kernel 5.11.0-40-generic
Luego vi qué instantáneas estaban disponibles:
# snap saved
Set Snap Age Version Rev Size Notes
1 docker 2h58m 20.10.8 1125 1.39GB auto
Comprobé que la instantánea estaba bien:
# snap check-snapshot 1
Snapshot #1 verified successfully.
Finalmente, restauró la instantánea automática:
# snap restore 1
Restored snapshot #1.
En este punto, docker ps -a
todavía me mostraban los contenedores que creé después de la última instalación, en lugar de los que quería restaurar. Quizás si no hubiera creado nuevos contenedores, simplemente funcionaría. Pero sé que al menos los archivos contenedores han sido restaurados, porque puedo encontrarlos en /var/snap/docker/common/var-lib-docker/overlay2/
. Esto es mejor que nada. Ten cuidado con snap remove
!
Restauración de contenedores originales
Permítanme resumir cómo llegué a este estado:
- corrió
sudo snap remove docker
que acabó con contenedores importantes - corrió
sudo snap install docker
para instalar Docker nuevamente - corrió
docker-compose up
lo que trajo dos nuevos contenedores - corrió
snap restore 1
para restaurar la instantánea automática
En este punto pude encontrar los archivos contenedores restaurados, pero docker ps -a
todavía no mostré los contenedores reales. En resumen, esto es lo que hice para recuperar los contenedores llenos:
- Eliminé todos los contenedores e imágenes visibles después de la segunda instalación ya que no los necesitaba.
- Eliminé la ventana acoplable nuevamente
sudo snap remove docker
y noté que la instantánea automática se realizaba nuevamente:"Guardar datos de la ventana acoplable instantánea en el conjunto de instantáneas automáticas n.º 2". - restauró la primera instantánea nuevamente:
snap restore 1
Ahora, si lo hago, docker ps -a
puedo volver a ver todos mis contenedores, ¡en estado detenido! Sin embargo, hay un problema: uno de ellos no se inicia y muestra el mensaje: Error: response from daemon: OCI runtime create failed: container with id exists:...
.
Para solucionar este problema, la forma más sencilla que encontré fue docker commit <container-id>
utilizar la imagen resultante para iniciarla como un nuevo contenedor. Después de ver que estaba bien, me deshice del roto. ¡Todo vuelve a la normalidad!
Por cierto, se considera una buena práctica utilizar volúmenes para conservar datos en contenedores. Las imágenes también pueden sersalvadoa un archivo.