docker开启"containerd-snapshotter": true之后,强制重启电脑后文件损坏?如何解决?

299 阅读3分钟

docker开启"containerd-snapshotter": true之后,强制重启电脑后文件损坏?如何解决?

docs.docker.com/engine/stor…

rclone.org/docker/

Enable containerd image store on Docker Engine

/etc/docker/daemon.json

{
  "features": {
    "containerd-snapshotter": true
  }
}
sudo systemctl restart docker

Create two directories required by rclone docker plugin:


sudo mkdir -p /var/lib/docker-plugins/rclone/config
sudo mkdir -p /var/lib/docker-plugins/rclone/cache

Install the managed rclone docker plugin for your architecture (here amd64):


docker plugin install rclone/docker-volume-rclone:amd64  --grant-all-permissions
docker plugin ls

此时rclone/docker-volume-rclone:amd64的plugin已经安装好了,

现在强制关闭电脑的电源,进行强制重启,

发现rclone/docker-volume-rclone:amd64的plugin已经无法正常运行.


docker plugin enable rclone/docker-volume-rclone:amd64 
amd64: Pulling from rclone/docker-volume-rclone
Digest: sha256:fe9389a00552f69b9fe6a2ad8149a5ad2ccd36ccef1f07c2628567b702551e47
830e914b5342: Complete
Error response from daemon: dial unix /run/docker/plugins/39f9c0d0077243e2700b8e426ee9028e08d6a2b5c438b5f98b14699c60389b72/rclone.sock: connect: no such file or directory

docker plugin disable rclone/docker-volume-rclone:amd64 

docker plugin rm rclone/docker-volume-rclone:amd64 
docker plugin install rclone/docker-volume-rclone:amd64  --grant-all-permissions
amd64: Pulling from rclone/docker-volume-rclone
Digest: sha256:fe9389a00552f69b9fe6a2ad8149a5ad2ccd36ccef1f07c2628567b702551e47
830e914b5342: Downloading [>                                                  ]       0B/25.77MB
failed commit on ref "docker-plugin-sha256:aa6b07aa3cd41addf0952c1d8b9c27eeabee361e4ccd93ab650b72ed0a4d96fe": unexpected commit size 35186, expected 1566: failed precondition

此时文件已经损坏,如何解决?

为什么docker删除plugin的时候没有把旧的镜像文件一起删掉呢?重新安装不上?

除了完全删除docker和containerd之外,还有其他方法修复吗?

终于找到解决方案:

cache=/host/dir设置缓存目录的备用主机位置 。 该插件将在此处保留 VFS 缓存。此外,它还将创建和维护 docker-plugin.state 此目录中的文件。当插件为 restarted 或 reinstalled,它将在此文件中查找以重新创建任何卷 以前就存在。但是,它们不会被重新安装到 重启后使用容器。通常这不是问题,因为 Docker 守护程序通常会在以下情况下重新启动受影响的用户容器 失败、守护程序重启或主机重启。

如果插件无法正常工作,并且只有在您尝试使用上述方法进行诊断后作为最后的手段,您可以尝试清除插件的状态。 请注意,所有现有的 rclone docker 卷可能必须重新创建。  这可能是必要的,因为重新安装不会清理现有状态文件以允许轻松恢复,如上所述。

docker plugin disable rclone # disable the plugin to ensure no interference
sudo rm /var/lib/docker-plugins/rclone/cache/docker-plugin.state # removing the plugin state
docker plugin enable rclone # re-enable the plugin afterward

终于解决这个的问题了,是镜像源有问题,换一个标签和镜像源就好了

failed commit on ref "docker-plugin-sha256:aa6b07aa3cd41addf0952c1d8b9c27eeabee361e4ccd93ab650b72ed0a4d96fe": unexpected commit size 35186, expected 1566: failed precondition
 docker plugin install docker.xuanyuan.me/rclone/docker-volume-rclone:amd64-1.69.2  --grant-all-permissions  --disable-content-trust