背景:
服务器磁盘满了,查看本地docker目录下占用太多,需要清除下不用的文件腾出资源,删除了/var/lib/docker/overlay2 下的文件,导致重新启动容器失败,启动新容器例如hello-world也失败
关于被删掉的overlay2存储详细说明可以参考
https://www.lagou.com/lgeduarticle/70618.html
解决办法:
重启docker
systemctl restart docker
然后启动一个容器试试
如果问题不能完美解决
ps: 如果不重启docker 还是会同样报错
ps:也可以将docker系统目录/var/lib/docker/下的overlay2文件夹,整个删掉,再重启docker后,会自动创建出新的overlay2文件夹目录,里边存放所必须的文件。这个时候重新run容器就会成功
如何清理docker磁盘占用
docker system df # 可查看 Docker 所占用的空间:
其中 Images 表示镜像,Containers 表示容器,Local Volumes 表示本地卷,Build Cache 表示构建缓存。
整体清理
可以通过 docker system prune 进行一次空间清理:
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all dangling images
- all dangling build cache
Are you sure you want to continue? [y/N]
该操作会删除所有停止的容器,所有未被至少一个容器使用的网络,所有的 dangling 镜像(在构建镜像时产生的 tag 为 none 的镜像,没有和任何其他有 tag 的镜像有关联),所有的 dangling 构建缓存(和 dangling 镜像同理)。
更激进一点,还可以执行 docker system prune -a,该操作还会删除没有和运行中的容器有关联的镜像。
docker system prune -a #
我们看到目录下被清空了
镜像清理:
docker rm <image_name> [-f]
容器清理:
docker container rm <containerid_or_name>
网络清理:
docker network ls
docker network rm <net_work_name>
数据卷清理:
docker volume ls
docker system prune -a –volumes 是在 docker system prune -a的基础上删除所有未使用的卷。