- 当我在 docker 容器内 apt install 时,提示根分区即将爆满,所以查询相关内容解决问题。
- 以下都是在 ubuntu20.04 下实验。
查找原因
关于 linux 的磁盘命令,都会使用 dh
或 df
命令,如果要找导致磁盘空间满的目录或文件,使用以下命令:
1 | du -sh /path/to/* 2>/dev/null | sort -hr | head -10 |
- 发现
/var
的占空间太大,查询/var
后,发现它是动态数据保存位置。主要保存缓存、日志以及软件运行所产生的文件,再次使用命令,查询var
目录下的较大目录或文件 - 发现有几个目录占比非常大,
lib
,cache
,log
,tmp
等等,cache
可以直接删除,log
可以使用命令journalctl --vacuum - time=7d
,删除超过 7 天的旧日志,现在具体来看/var/lib
目录 - 发现
/var/lib/docker
占 40 多个 G,原来镜像的位置保存在这个目录,当然很大,具体查看overlay2
的性质。现在针对这个目录做一些操作。一般/home
目录非常大,所以如果把 docker 里的镜像位置都放在/home
目录,那么会大大减少根分区的磁盘空间,那么开始操作!
修改 Docker 镜像默认存储位置
由于系统初始分区的原因,导致操作系统中对应根分区不会太大,通过 /var 目录不会单独分区。而 docker 镜像默认存储位置是在
/var/lib/docker
下,是使根分区爆炸。
查看 docker 容器存放位置:sudo docker info | grep "Docker Root Dir"
使用软链接
解决默认存储容量不足的情况,最直接且最有效的方法就是挂载新的分区到该目录。但是在原有系统空间不变的情况下,所以采用软链接的方式,修改镜像和容器的存放路径达到同样的目的。
1 | mv /var/lib/docker /path/to/docker |
指定容器启动参数
在配置文件中指定容器启动的参数 –graph=/var/lib/docker 来指定镜像和容器存放路径。
Reference
- https://cloud.tencent.com/developer/article/1835999
- https://blog.csdn.net/BigData_Mining/article/details/104921479
- https://blog.csdn.net/wjciayf/article/details/50717773
- https://www.51cto.com/article/707120.html
- https://cloud.tencent.com/developer/article/1870764
- https://www.cnblogs.com/loveer/p/11615627.html
本文作者:jujimeizuo
本文地址: https://blog.jujimeizuo.cn/2024/10/07/root-partition-filled/
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0 协议。转载请注明出处!