Docker构建报错:Create more free space in thin pool or use dm.min_free_space option to change behavior.

文章目录

  • 问题现象
  • 问题分析
  • 解决方案
  • 参考链接

问题现象

晚上使用docker进行构建任务的时候,运行docker run xxx命令的时候,返回错误如下所示。

docker: Error response from daemon: devmapper: 
Thin Pool has 264381 free data blocks which is less than minimum required 264503 free data blocks.
 Create more free space in thin pool or use dm.min_free_space option to change behavior.

问题分析

在宿主机上执行docker info命令,结果如下所示,展示了部分结果。首先分析问题,字段Thin Pool Minimum Free Space的值为138.7 GB,而实际可用的值Data Space Available为138.3 GB。因此报错。

Containers: 5
 Running: 4
 Paused: 0
 Stopped: 1
Images: 3237
Server Version: 1.12.6
Storage Driver: devicemapper
 Pool Name: docker-thinpool
 Pool Blocksize: 524.3 kB
 Base Device Size: 10.74 GB
 Backing Filesystem: xfs
 Data file:
 Metadata file:
 Data Space Used: 968.1 GB
 Data Space Total: 1.387 TB
 Data Space Available: 138.3 GB
 Metadata Space Used: 262.7 MB
 Metadata Space Total: 14.6 GB
 Metadata Space Available: 14.33 GB
 Thin Pool Minimum Free Space: 138.7 GB
 ...... 

解决方案

删除所有关闭的容器

docker ps -a | grep Exit | cut -d ' ' -f 1 | xargs docker rm

删除所有 dangling 镜像(即无 tag 的镜像):

docker rmi $(docker images | grep "^" | awk "{print $3}")

删除所有 dangling 数据卷(即无用的 volume):

docker volume rm $(docker volume ls -qf dangling=true)

暴力的做法可以使用命令docker system prune。docker system prune命令可以用于清理磁盘,删除关闭的容器、无用的数据卷和网络,以及 dangling 镜像(即无 tag 的镜像)。docker system prune -a命令清理得更加彻底,可以将没有容器使用 Docker 镜像都删掉。注意,这两个命令会把你暂时关闭的容器,以及暂时没有用到的 Docker 镜像都删掉。

$ docker system prune -a
WARNING! This will remove:
        - all stopped containers
        - all volumes not used by at least one container
        - all networks not used by at least one container
        - all images without at least one container associated to them
Are you sure you want to continue? [y/N] y

参考链接

https://docs.docker.com/engine/reference/commandline/system_prune/

你可能感兴趣的:(Docker)