failed to register layer: lstat /var/lib/docker/overlay2/cbff28c6…
或者
Failed to pull image “jmgao1983/flannel:v0.11.0-amd64”: rpc error: code = Unknown desc = failed to register layer: error creating overlay mount to /var/lib/docker/overlay2/1c0b7cbff…28c63ce/merged
网上一搜一大推 rm /var/lib/docker 然后重启docker ,顶多再加个更换存储方式为overlay,这种方式等于删除了docker 镜像和容器的文件信息,最直观的感受就是你所有本地镜像和容器都将不复存在,相当于做了一次docker初始化
本次问题出现原因:/var/lib/docker/overlay2/ 下的文件被错误删除导致镜像在拉取时和之前拉取到本地的镜像底层镜像冲突
解决办法:
docker system prune -a
如果你觉得这样太过武断(其实不然,这样是解决的最直接的方式QAQ),可以使用docker image prune 删除本地镜像, 那么如果你能找到之前根据此镜像创建的容器(包括已经Exited)状态的文件,删除与之相关联的部分也可创建
查看容器挂载点
docker inspect --format='{{.GraphDriver.Data}}' (你所要查看的容器id) | grep MergedDir
docker info 命令记录:
确认当前容器所用驱动
docker info --format '{{.Driver}}'
查看docker 根路径
docker info --format '{{.DockerRootDir}}'
关于/var/lib/docker/overlay2 的详解参:
https://blog.csdn.net/tanzhe2017/article/details/81010495
https://blog.csdn.net/u013256816/article/details/109554725