Cómo restaurar los contenedores de la ventana acoplable después de eliminar la ventana acoplable

Cómo restaurar los contenedores de la ventana acoplable después de eliminar la ventana acoplable

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 listen 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/containerspero 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 snapdversió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 -atodaví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 dockerque acabó con contenedores importantes
  • corrió sudo snap install dockerpara instalar Docker nuevamente
  • corrió docker-compose uplo que trajo dos nuevos contenedores
  • corrió snap restore 1para restaurar la instantánea automática

En este punto pude encontrar los archivos contenedores restaurados, pero docker ps -atodaví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 dockery 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 -apuedo 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.

información relacionada