devmapper: Thin Pool has 161749 free data blocks which is less than minimum required 163840 free dat

打镜像的时候出现如下问题:

devmapper: Thin Pool has 161749 free data blocks which is less than minimum required 163840 free data blocks. Create more free space in thin pool or use dm.min_free_space option to change behavior

原因:
    device-mapper在删除镜像时没有回收,这是一个内核bug。

解决办法:

     打Linux的补丁,使得在内核层面解决问题。如果不想打补丁,或者不知道怎么打补丁,也不想去倒腾了,那么可以使用下面的手工临时释放空间的办法。

执行如下三个命令(注意:执行的时候可能会出错)

1、清理exited进程:

docker rm $(docker ps -q -f status=exited)

2、清理dangling volumes:

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

3、清理dangling image:

docker rmi $(docker images --filter "dangling=true" -q --no-trunc)
# 清理dangling volumes:
docker volume rm $(docker volume ls -qf dangling=true)

# 或者
# docker volume ls -f dangling=true   # 列出所有dangling的volume
# docker volume prune                 # 删除dangling的volume

 
# 清理dangling image:
docker rmi $(docker images --filter "dangling=true" -q --no-trunc)

# 或者
# docker images -f dangling=true    # 列出所有dangling的image
# docker images purge               # 删除dangling的image

# 其他相关的删除命令
# - 根据自定义规则删除image
# docker images -a | grep "pattern" | awk '{print $1":"$2}' | xargs docker rmi

# - 一次删除所有dangling状态的资源,包括image, container, volume, network
# docker system prune

#- 一次删除所有stopped的container,和未使用的image(不只限于dangling的image)
# docker system prune -a

 

你可能感兴趣的:(docker)