本文最后更新于:2022年7月4日 上午
Docker 默认会占用根目录的空间,时间久了就会吧根目录占满,本文记录解决方案。
问题复现
不知不觉根目录已经没有空间,ls
的补全都会报错。
1 cannot create temp file for here-document: No space left on devic
1 2 3 4 5 6 7 8 9 $ df -h Filesystem Size Used Avail Use% Mounted on udev 32G 0 32G 0% /dev tmpfs 6.3G 138M 6.2G 3% /run /dev/mapper/MT3--vg-root 219G 208G 0 100% / tmpfs 32G 32K 32G 1% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 32G 0 32G 0% /sys/fs/cgroup /dev/sdb1 3.6T 1.1T 2.4T 32% /gluster/data
解决思路
方案1
1 2 3 4 5 sudo apt-get autoclean # 删除你已经卸载掉的软件包的命令为 sudo apt-get clean # 若你想清理出更多的空间,可以把电脑上存储的安装包全部卸载 sudo apt-get autoremove # 删除已经被卸载的软件所依赖的(其他软件不依赖的)孤立的软件包
方案2
空间仍不足:通过建立软链接将/var目录下占用空间较大的目录移动到富足的空间区块(如/home)下,使得/var下不再占用空间。 (具体实现)
1 sudo du -ah -x --max -depth =1
通过排查发现/var/lib/docker
中文件巨大,将其移到其他磁盘中
为了避免风险并提升速度(小文件很多),将其压缩到其他盘中再解压
1 tar -zcvf [压缩后的文件.tar.gz] var/lib/ docker
1 tar -zxvf [压缩后的文件.tar.gz]
将/var/lib/docker
重命名为/var/lib/docker-old
1 sudo mv /var/lib/docker /var/lib/docker-old
这时查看 docker images
是空的
1 ln -s /var/ lib/docker [解压后的docker文件夹]
这时查看 docker images
一切正常的化已经可以看到之前的所有docker 数据了
但是如果这时新建容器或启动容器会报错:
1 OCI runtime create failed: /var/ lib/docker/ overlay2/c6eb60dada971e57fd5d125fb61d294870be347a2efb287862f8dfe52d99c57b/m erged is not an absolute path or is a symlink: unknown
1 2 service docker stop service docker start
或
参考资料
文章链接:
https://www.zywvvd.com/notes/tools/docker/docker-no-space-left/