我的 Dockerfile 里有一步在镜像里安装软件的步骤。
# 安装go1.15
RUN rpm --rebuilddb && echo "sslverify=false" >> /etc/yum.conf && yum install golang-pkg-bin-linux-amd64 java-1.8.0-openjdk-devel -y
很不幸的是,执行 docker build
的时候竟然提示容量不足(对 yum 比较熟悉的朋友应该也有看过类似的报错)。
Transaction Summary
================================================================================
Install 2 Packages (+15 Dependent packages)
Total download size: 147 M
Installed size: 512 M
Downloading packages:
Error downloading packages:
neon-0.30.0-3.el7.x86_64: Insufficient space in download directory /var/cache/yum/x86_64/2.2/base/packages
* free 0
* needed 165 k
subversion-1.7.14-16.tl2.x86_64: Insufficient space in download directory /var/cache/yum/x86_64/2.2/tlinux/packages
* free 0
* needed 1.0 M
很明显就是本地容量不足了,所以导致无法安装软件。那为什么 docker build
也会有这样的问题呢?有些同学可能以为把 Docker 的镜像文件移到自己额外挂载的硬盘上就不受镜像多少(大小)限制了,但是不知道原来 docker build
的一些 cache 依然会用到根目录,感兴趣的话,可以去看下 docker build
相关的源码,源码会告诉 cache 的目录默认是哪里的。
如果要快速解决这个问题,可以执行下面的命令。
docker builder prune
Usage: docker builder prune
Remove build cache
Options:
-a, --all Remove all unused images, not just dangling ones
--filter filter Provide filter values (e.g. 'unused-for=24h')
-f, --force Do not prompt for confirmation
--keep-storage bytes Amount of disk space to keep for cache