我用 删除了 docker sudo snap remove docker。我实际上并不想删除它,只是检查我是否安装了它(事后snap应该使用),相信它会提示我类似的操作。但它只是继续删除了 docker。美好的。很快又重新安装了一次。snap list[Y/n]apt
但是,我的容器在哪里?!所有图像和容器都(docker ps -a)消失了!卸载花了很长时间,所以我想知道是否有一些备份或文件仍然保留并且容器可以恢复?不关心图像,只关心容器。谢谢。
检查过,/var/snap/docker/common/var-lib-docker/containers但原来的容器不在那里。
事实证明,花费很长时间的操作确实是备份,或者用他们的术语来说,是快照。从文档中:
快照是使用 snap save 命令手动生成的,并在删除快照时自动生成(需要 snapd 2.39+)。快照可用于备份快照的状态、将快照恢复到以前的状态以及将全新的 snapd 安装恢复到以前保存的状态。
我检查了我的snapd版本:
# snap --version
snap 2.52.1
snapd 2.52.1
series 16
ubuntu 21.04
kernel 5.11.0-40-generic
Run Code Online (Sandbox Code Playgroud)
然后查看可用的快照:
# snap saved
Set Snap Age Version Rev Size Notes
1 docker 2h58m 20.10.8 1125 1.39GB auto
Run Code Online (Sandbox Code Playgroud)
检查快照是否正常:
# snap check-snapshot 1
Snapshot #1 verified successfully.
Run Code Online (Sandbox Code Playgroud)
最后恢复自动快照:
# snap restore 1
Restored snapshot #1.
Run Code Online (Sandbox Code Playgroud)
此时docker ps -a仍然向我显示了我在最新安装后创建的容器,而不是我想要恢复的容器。也许如果我没有创建新的容器,它就会起作用。但我知道至少容器文件已经恢复,因为我可以在/var/snap/docker/common/var-lib-docker/overlay2/. 这总比没有好。小心snap remove!
让我回顾一下我是如何进入这种状态的:
sudo snap remove docker消灭了重要的容器sudo snap install docker安装dockerdocker-compose up带来了两个新容器snap restore 1恢复自动快照此时我能够找到恢复的容器文件,但docker ps -a仍然没有显示实际的容器。总之,这就是我为取回完整容器所做的事情:
sudo snap remove docker注意到自动快照再次发生:“在自动快照集 #2 中保存快照“docker”的数据”。snap restore 1现在,如果我这样做docker ps -a,我可以再次看到所有容器处于停止状态!但有一个问题,其中一个无法启动,并显示以下消息:Error: response from daemon: OCI runtime create failed: container with id exists:...。
为了解决这个问题,我发现的最简单的方法是docker commit <container-id>使用生成的图像将其作为新容器启动。我一看没问题,就把坏掉的扔掉了。一切恢复正常!
顺便说一句,使用卷将数据保存在容器中被认为是很好的做法。图像也可以保存到存档中。
| 归档时间: |
|
| 查看次数: |
7280 次 |
| 最近记录: |